C語言的關(guān)鍵字有很多,要說最不常見的,我覺得應(yīng)該是auto。 說它不常見,因?yàn)楹芏鄷r(shí)候,我們都把它給省略了。 比如在函數(shù)內(nèi)部定義變量a,正常人都會這樣寫:
void function() { int a; }很少有人會在前面加一個(gè)auto:
void function() { auto int a; }其實(shí)這兩種寫法是等價(jià)的,嚴(yán)謹(jǐn)一點(diǎn),在C語言中是等價(jià)的。 那auto關(guān)鍵字是不是雞肋般的存在? auto聲明的變量我們把它稱作自動變量,所謂自動變量,就是定義的時(shí)候自動分配內(nèi)存,函數(shù)運(yùn)行結(jié)束后內(nèi)存自動釋放,所以你完全可以把它理解成局部變量。 它的作用跟static正好相反,static修飾的變量因?yàn)榇娣旁陟o態(tài)數(shù)據(jù)區(qū),所以即使函數(shù)調(diào)用結(jié)束了,變量也不會被釋放。
void function() { static int num = 0; num++; printf("num = %d ", num); } int main() { int i; for (i = 0; i < 3; i++) { function(); } return 0; }我覺得auto存在的意義,可能就是跟static靜態(tài)變量、register寄存器變量、extern外部變量區(qū)分開。
auto int num = 0; //錯(cuò)誤 int main() { return 0; }第二個(gè),在C語言中,使用auto聲明的變量可以沒有類型,比如直接來個(gè)auto a,編譯器會自動把a(bǔ)當(dāng)作整型數(shù)據(jù)。
int main() { auto a; }編譯結(jié)果:
root@Turbo:test# gcc test.c -o test test.c: In function ‘main’: test.c:5:7: warning: type defaults to ‘int’ in declaration of ‘a(chǎn)’ [-Wimpli cit-int] 5 | auto a; | ^ root@Turbo:test#第三個(gè),在C++中,auto是一個(gè)類型說明符,編譯器可以通過初始化的結(jié)果來判斷變量的類型,前提是變量一定得初始化,否則就會報(bào)錯(cuò)。
int main() { autoa=1.1;//編譯器判斷a的類型為double return 0; }
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137826 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28475
原文標(biāo)題:C語言最雞肋的關(guān)鍵字
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
EE-62:在C語言中訪問短字內(nèi)存
電子發(fā)燒友網(wǎng)站提供《EE-62:在C語言中訪問短字內(nèi)存.pdf》資料免費(fèi)下載
發(fā)表于 01-07 14:02
?0次下載
![EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言</b>中訪問短<b class='flag-5'>字</b>內(nèi)存](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言關(guān)鍵字分別發(fā)生在哪個(gè)階段
以下C語言關(guān)鍵字,分別發(fā)生在哪個(gè)階段? 第一個(gè),define。 首先得糾正一下,define 并不是C語言里面的
C++新手容易犯的十個(gè)編程錯(cuò)誤
簡單的總結(jié)一下?C++ 新手容易犯的一些編程錯(cuò)誤,給新人們提供一個(gè)參考。 1 有些關(guān)鍵字在 cpp 文件中多寫了 對于 C++ 類,一些關(guān)鍵字只要寫在 .h 中就好,cpp 中就不用再
基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony
console.log(typeof data); // number
3.2.2、number
TypeScript 提供了 number 關(guān)鍵字來表示數(shù)字類型,它是雙精度 64 位浮點(diǎn)值,既可以表示整數(shù)
發(fā)表于 09-14 12:47
使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測
電子發(fā)燒友網(wǎng)站提供《使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測.pdf》資料免費(fèi)下載
發(fā)表于 09-02 11:30
?0次下載
![使用邊緣AI和Sitara處理器進(jìn)行<b class='flag-5'>關(guān)鍵字</b>檢測](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
typedef struct和直接struct的區(qū)別
在C語言中, typedef 和 struct 是兩種不同的關(guān)鍵字,它們在定義和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C
鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基本概念標(biāo)識符
在倉頡編程語言中,開發(fā)者可以給一些程序元素命名,這些名字也被稱為“標(biāo)識符”,標(biāo)識符分為普通標(biāo)識符和原始標(biāo)識符兩類,它們分別遵從不同的命名規(guī)則。
普通標(biāo)識符不能和倉頡關(guān)鍵字相同,可以取自以下兩類字符
發(fā)表于 08-06 17:37
快速掌握C語言關(guān)鍵字
C語言中的32個(gè)關(guān)鍵字你知道多少個(gè)呢?根據(jù)關(guān)鍵字的作用分為四類:數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、
![快速掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>關(guān)鍵字</b>](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
inline關(guān)鍵字被優(yōu)化導(dǎo)致此類函數(shù)被布局在flash內(nèi),怎么處理?
問題解決。
但是,希望樂鑫官方把idf內(nèi)源碼中的inline關(guān)鍵詞都替換為__attribute((always_inline)),因?yàn)閕nline關(guān)鍵字不可靠!
期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權(quán)宜之計(jì)、臨時(shí)之策。
發(fā)表于 06-21 12:03
嵌入式中C語言結(jié)構(gòu)體基本實(shí)現(xiàn)
C語言中的數(shù)組只能允許程序員定義存儲相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。 結(jié)構(gòu)體的定義 ????要想定義結(jié)構(gòu),必須用到 struct
![嵌入式中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結(jié)構(gòu)體基本實(shí)現(xiàn)](https://file1.elecfans.com//web2/M00/E4/42/wKgZomY_FOKAdlRXAADOabNodfI522.jpg)
C語言中的typedef的應(yīng)用
C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個(gè)新的名字。下面的實(shí)例為單字節(jié)數(shù)字定義了一個(gè)術(shù)語 BYTE。
發(fā)表于 03-06 11:34
?434次閱讀
![<b class='flag-5'>C</b><b class='flag-5'>語言</b>中的typedef的應(yīng)用](https://file1.elecfans.com/web2/M00/C3/B9/wKgaomXn5LGAbFesAAAe4pvOxcc159.png)
嵌入式C語言面試大挑戰(zhàn)
在C++中static關(guān)鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態(tài)數(shù)據(jù)成員和靜態(tài)成員方法靜態(tài)數(shù)據(jù)成員
發(fā)表于 03-05 14:18
?389次閱讀
![嵌入式<b class='flag-5'>C</b><b class='flag-5'>語言</b>面試大挑戰(zhàn)](https://file1.elecfans.com/web2/M00/C3/99/wKgaomXmudSAfByVAAAaS7J-56c861.png)
簡單總結(jié)一下嵌入式C++中常見的錯(cuò)誤形式
對于 C++ 類,一些關(guān)鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static 等關(guān)鍵字,如果在 cpp 中多寫,編譯器會報(bào)錯(cuò)。
內(nèi)聯(lián)函數(shù)定義 為什么需要內(nèi)聯(lián)函數(shù)
inline關(guān)鍵字是C99標(biāo)準(zhǔn)的型關(guān)鍵字,其作用是將函數(shù)展開,把函數(shù)的代碼復(fù)制到每一個(gè)調(diào)用處。
評論