C語言的關(guān)鍵字有很多,要說最不常見的,我覺得應(yīng)該是auto。 說它不常見,因?yàn)楹芏鄷r(shí)候,我們都把它給省略了。 比如在函數(shù)內(nèi)部定義變量a,正常人都會(huì)這樣寫:
void function() { int a; }很少有人會(huì)在前面加一個(gè)auto:
void function() { auto int a; }其實(shí)這兩種寫法是等價(jià)的,嚴(yán)謹(jǐn)一點(diǎn),在C語言中是等價(jià)的。 那auto關(guān)鍵字是不是雞肋般的存在? auto聲明的變量我們把它稱作自動(dòng)變量,所謂自動(dòng)變量,就是定義的時(shí)候自動(dòng)分配內(nèi)存,函數(shù)運(yùn)行結(jié)束后內(nèi)存自動(dòng)釋放,所以你完全可以把它理解成局部變量。 它的作用跟static正好相反,static修飾的變量因?yàn)榇娣旁陟o態(tài)數(shù)據(jù)區(qū),所以即使函數(shù)調(diào)用結(jié)束了,變量也不會(huì)被釋放。
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,編譯器會(huì)自動(dòng)把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é)果來判斷變量的類型,前提是變量一定得初始化,否則就會(huì)報(bào)錯(cuò)。
int main() { autoa=1.1;//編譯器判斷a的類型為double return 0; }
-
C語言
+關(guān)注
關(guān)注
183文章
7634瀏覽量
144087 -
變量
+關(guān)注
關(guān)注
0文章
615瀏覽量
29315
原文標(biāo)題:C語言最雞肋的關(guān)鍵字
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
亞馬遜 SP-API 深度開發(fā):關(guān)鍵字搜索接口的購物意圖挖掘與合規(guī)競(jìng)品分析
阿里巴巴開放平臺(tái)關(guān)鍵字搜索商品接口實(shí)戰(zhàn)詳解:OAuth2.0 認(rèn)證落地 + 檢索效率優(yōu)化(附避坑代碼)
阿里巴巴國際站關(guān)鍵字搜索 API 實(shí)戰(zhàn):從多條件篩選到商品列表高效獲客

micro 關(guān)鍵字搜索全覆蓋商品,并通過 API 接口提供實(shí)時(shí)數(shù)據(jù)
《ESP32S3 Arduino開發(fā)指南》第三章 C/C++語言基礎(chǔ)
深入理解C語言:C語言循環(huán)控制

static在單片機(jī)中的妙用
單片機(jī)編程關(guān)鍵字之volatile
帶你在單片機(jī)編程中熟練使用const(可下載)
大語言模型的解碼策略與關(guān)鍵優(yōu)化總結(jié)

EE-62:在C語言中訪問短字內(nèi)存

評(píng)論