1)全域性變數:
作用域:全域性作用域(只需要在乙個原始檔中定義,就可以作用於所有的原始檔);
生命週期:程式執行期一直存在;
記憶體分布:全域性(靜態儲存區)。
注意:如果再兩個檔案中都定義了相同名字的全域性變數,則連線錯誤:變數重定義。
2)全域性靜態變數:
生命週期:程式執行期一直存在;
作用域:檔案作用域(只在被定義的檔案中可見:static的乙個作用就是隱藏)
記憶體分布:全域性(靜態儲存區)。
定義方法:static關鍵字,const關鍵字(注意c/c++意義不同)
注意:只要檔案不相互包含,兩個不同的檔案中是可以定義完全相同的兩個全域性靜態變數的。
3)靜態區域性變數:
生命週期:程式執行期一直存在;(超過其作用域便無法被引用)
作用域:區域性作用域(只在區域性作用於可見)
記憶體分布:全域性(靜態儲存區)。
定義方法:區域性作用域中用static定義。
注意:只被初始化一次,多執行緒中需要加鎖保護。
4)區域性變數:
生命週期:程式執行處區域性作用域 即被銷毀。
作用域:區域性作用域(只在區域性作用於可見)
記憶體分布:棧區
變數的生命週期
from 今天在論壇上看到有朋友發帖問道 既然靜態全域性變數與全域性變數都儲存在全域性資料區,為什麼作用域卻不一樣呢?也許答案非常簡單 c 就是這麼規定的,靜態全域性變數與全域性變數的唯一區別就是作用域不同。對乙個c 變數來說,有兩個屬性非常重要 作用域和生命週期,它們從兩個不同的維度描述了乙個變數...
switch case 變數生命週期
case 2 新增圖書 system.out.println n圖書資訊列表 system.out.print 請輸入新增圖書名稱 string name input.next 是否能新增圖書,如果貨架滿了 6 則無法新增false能新增true boolean flagadd false for ...
c變數的生命週期
內部變數 生命週期 函式結束時結束.作用域 宣告的花括號中.儲存區域 棧記憶體區域.不會自動初始化.但會申請空間.外部變數 生命週期 和程式的生命週期一樣.作用域 程式的所以地方做可以使用,但需要使用extren進行宣告.儲存區域 在全域性區域.自動初始化.並生命自身的儲存空間.內部靜態變數 生命週...