C語言-變數的儲存類別(auto, static, register, extern)
阿新 • • 發佈:2019-01-28
任何一個變數和函式都有兩個屬性,1、資料型別(我們已經熟知) 2、資料的儲存類別
有2種儲存方式,有4種儲存類別
auto自動變數
一般來說auto可以省略,1、函式的形參 2、在函式中定義的區域性變數(包括在複合語句中定義的區域性變數)都是自動變數auto。上述2種自動變數都是儲存在記憶體的動態儲存區中的。
static靜態區域性變數
1、第一次賦值有效,以後在呼叫時,直接使用上一次呼叫的值而不需重新賦值。
2、儲存在靜態儲存區內。
3、如果在定義區域性變數時不賦初值的話,則對靜態區域性變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)。
static靜態全域性變數
1、static int a 變數只可在本檔案中使用
2、而int a,只是全域性變數,可以在整個工程中使用,其他檔案引用時需要加extern關鍵字宣告
register變數
1、為了提高效率,C語言允許將區域性變數的值放在CPU中的暫存器中。
2、只有區域性自動變數和形式引數可以作為暫存器變數;一個計算機系統中的暫存器數目有限,不能定義任意多個暫存器變數。
3、區域性靜態變數不能定義為暫存器變數。
extern變數
1、在一個檔案中擴充套件外部變數的作用域
2、在一個檔案中引用另一個檔案中已經定義的外部變數