auto
定義變數為區域性變數,在函式中定義變數時預設為auto
static
定義靜態區域性變數,使用static修飾的變數將被放置到資料段,為空鏈結
register
告知編譯器將盡可能變數存放到暫存器中,但該關鍵字只是乙個請求,並不能保證執行,linux中就有乙個變數被此關鍵字修飾-gd,被此關鍵字修飾的變數不一定能被放進,例如乙個double型別的變數就會因為超量而無法放到暫存器中
extern
外部宣告,由於編譯器在編譯時,是按檔案來編譯的,在編譯乙個檔案的過程中是看不到其他檔案的,所以需要在前面加入宣告,告知編譯器此函式/變數 已經在其他檔案編譯了
類似於彙編中的export
typedef
儲存類關鍵字,目的是定義使用者自定義型別,提高**可讀性和易用性
restrict
該關鍵字是c99中新增的關鍵字,該關鍵字僅在修飾指標時有效,作用是告知編譯器該指標僅在此處被呼叫,可以放心被優化
volatile
該關鍵字的作用是告知編譯器此變數在其他地方可能被更改,不要對此變數進行優化,每次使用該變數都要重新從暫存器中讀值,
一般情況,會改在編譯器未知的情況下改變變數的值的情況有
中斷中會對此程式進行修改
硬體會變數值進行修改
會在其他檔案中對變數進行修改
所以在定義變數時要開發者自行判斷該變數的使用,以保證不會出錯和程式效率
C語言學習筆記 type關鍵字
typedef為c語言的關鍵字,作用是為一種資料型別定義乙個新名字。這裡的資料型別包括內部資料型別 int,char等 和自定義的資料型別 struct等 使用typedef定義新型別的方法 在傳統的變數宣告表示式裡用 新的 型別名替換變數名,然後把關鍵字typedef加在該語句的開頭即可。例 in...
C語言學習筆記 void關鍵字
void 修飾函式返回值和引數 為了表示 無 如果函式沒有返回值,那麼應該將其宣告為 void,同樣的,如果函式沒有引數,也應該宣告其引數為 void f 函式任意引數,返回值預設 f 函式無參無返回值 void f void c 語言沒有定義 void 究意是多大記憶體的別名,沒有 void 標尺...
C語言學習之關鍵字
在我們講解關鍵字之前,我們先來了解一下宣告跟定義的區別 定義 所謂定義就是 編譯器 建立了乙個物件,並為這一物件分配了記憶體並且給它取了乙個名字,這個名字就是我們經常所說的變數名或者物件名,乙個變數或者物件在一定區域內 比如函式內 全域性等 只能定義一次 宣告 有兩重含義 1 告訴編譯器,這個名字已...