C語言的關鍵字有很多,要說最不常見的,我覺得應該是auto。 說它不常見,因為很多時候,我們都把它給省略了。 比如在函數內部定義變量a,正常人都會這樣寫:
void function() { int a; }很少有人會在前面加一個auto:
void function() { auto int a; }其實這兩種寫法是等價的,嚴謹一點,在C語言中是等價的。 那auto關鍵字是不是雞肋般的存在? auto聲明的變量我們把它稱作自動變量,所謂自動變量,就是定義的時候自動分配內存,函數運行結束后內存自動釋放,所以你完全可以把它理解成局部變量。 它的作用跟static正好相反,static修飾的變量因為存放在靜態(tài)數據區(qū),所以即使函數調用結束了,變量也不會被釋放。
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關鍵字的使用注意事項. 第一個,全局變量不能用auto修飾,編譯會報錯。
auto int num = 0; //錯誤 int main() { return 0; }第二個,在C語言中,使用auto聲明的變量可以沒有類型,比如直接來個auto a,編譯器會自動把a當作整型數據。
int main() { auto a; }編譯結果:
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’ [-Wimpli cit-int] 5 | auto a; | ^ root@Turbo:test#第三個,在C++中,auto是一個類型說明符,編譯器可以通過初始化的結果來判斷變量的類型,前提是變量一定得初始化,否則就會報錯。
int main() { autoa=1.1;//編譯器判斷a的類型為double return 0; }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7598瀏覽量
136207 -
變量
+關注
關注
0文章
613瀏覽量
28329
原文標題:C語言最雞肋的關鍵字
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
C語言關鍵字分別發(fā)生在哪個階段
以下C語言關鍵字,分別發(fā)生在哪個階段? 第一個,define。 首先得糾正一下,define 并不是C語言里面的
typedef struct和直接struct的區(qū)別
在C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C
inline關鍵字被優(yōu)化導致此類函數被布局在flash內,怎么處理?
問題解決。
但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠!
期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
發(fā)表于 06-21 12:03
C語言中的typedef的應用
C 語言提供了 typedef 關鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節(jié)數字定義了一個術語 BYTE。
發(fā)表于 03-06 11:34
?345次閱讀
嵌入式C語言面試大挑戰(zhàn)
在C++中static關鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態(tài)數據成員和靜態(tài)成員方法靜態(tài)數據成員
發(fā)表于 03-05 14:18
?288次閱讀
簡單總結一下嵌入式C++中常見的錯誤形式
對于 C++ 類,一些關鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static 等關鍵字,如果在 cpp 中多寫,編譯器會報錯。
在NVM和本地\"內存中定義數組(靜態(tài) /global /local)的\"關鍵字是什么?
在 NVM 和本地\"內存中定義數組(靜態(tài) /global /local)的\"關鍵字是什么? 還有與 32 位對齊的關鍵字怎么樣。
發(fā)表于 01-25 07:52
探討多線程編程中的volatile關鍵字應用
有時候,我們可能需要在指針類型之間進行轉換,而編譯器會認為這是不安全的操作,從而導致編譯錯誤。使用volatile關鍵字可以告知編譯器,這個類型轉換是有意義的,不應該引發(fā)錯誤。
發(fā)表于 12-27 13:53
?420次閱讀
你還記得這個C語言關鍵字嗎?
當你使用volatile關鍵字時,你告訴編譯器該變量的值可能會在程序的執(zhí)行過程中被外部因素更改,因此編譯器不應該對該變量的讀寫進行優(yōu)化。下面是一些使用volatile的例子,以及對它們的一些文字描述
vlookup提取關鍵字匹配多個結果
是它能夠基于關鍵字匹配提取多個結果。 當使用VLOOKUP提取多個結果時,需要遵循以下幾個重要步驟。首先,您需要確保數據的組織和結構正確。數據應以表格格式排列,左側為關鍵字列,右側為相應的信息列。 首先,讓我們考慮一個實際的例子。假設您有一個大型數據集
評論