1. 程式人生 > >C語言-變數的儲存類別(auto, static, register, extern)

C語言-變數的儲存類別(auto, static, register, extern)

任何一個變數和函式都有兩個屬性,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、在一個檔案中引用另一個檔案中已經定義的外部變數