-
局部變量 auto自動變量,
- 函數內有效
- 沒有賦初值,內容爲隨機
-
靜態(static)局部變量
- 函數內有效
- static局部變量生命週期和程序運行週期一樣,只初始化一次,可以賦值多次
- 如未賦值,系統自動賦值,數值型爲0;字符爲空字符。
-
全局變量
- 函數外定義,若其他文件中的函數調用此變量,須用extern聲明
- 全局變量的聲明週期和程序運行週期一樣
- 不同文件的全局變量不可重名。
-
靜態(static)全局變量
- 函數外定義,作用範圍被限制在所定義的文件中
- 不同文件靜態全局變量可以重名,作用域不衝突
- static全局變量的生命週期和程序運行週期一樣,static全局變量的值只初始化一次。
-
extern全局變量聲明
extern int a 聲明一個變量, -
全局函數和靜態函數
在C語言中函數默認都是全局的,使用關鍵字static可以將函數聲明爲靜態,函數定義爲static就意味着這個函數只能在定義這個函數的文件中使用,在其他文件中不能調用,即使在其他文件中聲明這個函數都沒用。
內存分區, 預處理,編譯,彙編,鏈接,生成一個二進制可執行程序。
- 代碼區
- 全局初始化數據局/靜態數據區(data段)
- 未初始化數據區