全域性變數、靜態變數、區域性變數、const變數
阿新 • • 發佈:2018-11-15
生命週期:
- 一個變數存在的週期
作用域:
- 一個變數可以被引用的範圍
作用域 | 生命週期 | 定義方法 | 記憶體分佈 | 注意 | |
---|---|---|---|---|---|
全域性變數 | 全域性作用域(只需在一個原始檔定義,就可作用於所有原始檔) | 程式執行期一直存在 | 引用方法:其他檔案中要使用必須用 extern 關鍵字宣告,或通過包含標頭檔案的方式 | 全域性(靜態)儲存區 | 如果兩個檔案中都定義了相同名字的全域性變數,則連接出錯:變數重定義 |
全域性靜態變數 | 檔案作用域(只在被定義的檔案中可見) | 程式執行期一直存在 | static 關鍵字、const 關鍵字 | 全域性(靜態)儲存區 | 只要檔案不相互包含,兩個不同檔案變數可同名 |
靜態區域性變數 | 區域性作用域 | 程式執行期一直存在 | 區域性作用域中用 static 定義 | 全域性(靜態)儲存區 | 只被初始化一次,多執行緒中可加鎖保護 |
區域性變數 | 區域性作用域 | 程式執行出局部作用域即被銷燬 | 用 auto 指示符定義,也可省略 | 棧區 |