變數的生命週期

2021-10-01 14:21:10 字數 654 閱讀 5684

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進行宣告.儲存區域 在全域性區域.自動初始化.並生命自身的儲存空間.內部靜態變數 生命週...