C語言中變量的存儲類別:
-
自動類型(auto)
-
寄存器類型(register)
-
靜態類型(static)
-
外部變量(extern)
自動類型(auto)
自動類型(auto)變量是存儲在動態存儲區的變量。
關鍵字:auto
一般形式爲:auto 類型 變臉名
局部變量默認儲存類型爲auto
寄存器類型(register)
寄存器類型(register)變量存儲單元被分配在寄存器中。
關鍵字:register
一般形式爲:register 類型 變量名
注意:
-
寄存器類型的變量不宜過多;
-
變量長度應該與通用寄存器的長度相當,一般爲int型或char型;
-
寄存器變量的定義通常是不必要的。
靜態類型(static)
靜態類型(static)變量佔用靜態存儲區。
關鍵字:static
一般形式爲:static 類型 變量名
靜態變量擁有默認值。
靜態類型又分爲靜態局部變量和靜態全局變量。
靜態局部變量:
定義在函數內的靜態變量稱爲靜態局部變量。
說明:
-
靜態局部變量的生存週期是整個程序的運行期間;
-
靜態局部變量具有局部變量的性質,即其作用域是侷限在定義它的本函數內的,但其值仍然存在,因爲存儲空間並沒有釋放;
-
靜態局部變量的賦初值的時間是在編譯階段,並且只能被賦初值一次,即使它所有的函數調用結束,也不釋放存儲單元。
靜態全局變量:
在定義全局變量時前面加上關鍵字static,就是靜態全局變量。
靜態全局變量的特點:
-
其作用範圍(即作用域)是定義它的程序文件,而不是整個程序;
-
靜態全局變量的生存週期是整個程序運行期間;
-
使用靜態全局變量的好處是同一程序的兩個或多個不同的源程序文件中可以使用相同名稱的變量名,而互不干擾。
外部類型(extern)
外部類型(extern):在任何函數之外定義的變量都叫做外部變量。
關鍵字:extern
一般形式:extern 類型 變量名
在一個文件中定義的全局變量缺省爲外部的。即extern關鍵字可以省略。但是如果其他文件要使用這個文件中定義的全局變量,必須在使用前用“extern”作外部聲明。外部聲明通常放在文件的開頭。