C語言的關鍵字有很多,要說最不常見的,我覺得應該是auto。 說它不常見,因為很多時候,我們都把它給省略了。 比如在函數內部定義變量a,正常人都會這樣寫:
void function() { int a; }很少有人會在前面加一個auto:
void function() { auto int a; }其實這兩種寫法是等價的,嚴謹一點,在C語言中是等價的。 那auto關鍵字是不是雞肋般的存在? auto聲明的變量我們把它稱作自動變量,所謂自動變量,就是定義的時候自動分配內存,函數運行結束后內存自動釋放,所以你完全可以把它理解成局部變量。 它的作用跟static正好相反,static修飾的變量因為存放在靜態數據區,所以即使函數調用結束了,變量也不會被釋放。
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靜態變量、register寄存器變量、extern外部變量區分開。
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; }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7629瀏覽量
140099 -
變量
+關注
關注
0文章
614瀏覽量
28797
原文標題:C語言最雞肋的關鍵字
文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
static在單片機中的妙用
不要從字面意思誤以為關鍵字 static 很安靜,其實它一點都不安靜。這個關鍵字在 C 語言里主要有兩個作用,下面我們就來介紹一下 C
發表于 04-02 13:50
?0次下載
單片機編程關鍵字之volatile
volatile 修飾的變量是說這變量可能會被意想不到地改變。通常對于程序員而言,單片機 中用的就算常見了volatile 是易變的,不穩定的意思。其實對于很多人來說,根本沒見過這個關鍵字,不 知道
發表于 04-02 13:47
?0次下載
帶你在單片機編程中熟練使用const(可下載)
在 C 語言關鍵字中 const 舉足輕重,我們今天就深度聊一聊 const 的定義和實際應用,讓它 不再是迷C 語言中 const
發表于 04-01 14:18
?0次下載
C++新手容易犯的十個編程錯誤
簡單的總結一下?C++ 新手容易犯的一些編程錯誤,給新人們提供一個參考。 1 有些關鍵字在 cpp 文件中多寫了 對于 C++ 類,一些關鍵字只要寫在 .h 中就好,cpp 中就不用再
C語言與Java語言的對比
C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C
基于ArkTS語言的OpenHarmony APP應用開發:HelloOpenharmony
console.log(typeof data); // number
3.2.2、number
TypeScript 提供了 number 關鍵字來表示數字類型,它是雙精度 64 位浮點值,既可以表示整數
發表于 09-14 12:47
typedef struct和直接struct的區別
在C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區別。 typedef struct 和直接 struct 在 C
鴻蒙原生應用元服務開發-倉頡基本概念標識符
在倉頡編程語言中,開發者可以給一些程序元素命名,這些名字也被稱為“標識符”,標識符分為普通標識符和原始標識符兩類,它們分別遵從不同的命名規則。
普通標識符不能和倉頡關鍵字相同,可以取自以下兩類字符
發表于 08-06 17:37
inline關鍵字被優化導致此類函數被布局在flash內,怎么處理?
問題解決。
但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠!
期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
發表于 06-21 12:03
PLC編程語言和C語言的區別
在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯著的區別。本文將從多個維度深入探討PLC編程
評論