變數的作用域和儲存方式

2021-10-10 05:52:56 字數 580 閱讀 7276

按作用域可分為

區域性變數:函式級區域性變數,復合語句級區域性變數,這種型別的變數在本函式或本復合語句內有效,在其他範圍內無效。

按儲存方式可分為

靜態儲存區儲存:全域性變數和static區域性變數全部存放在靜態儲存區,從定義開始占用記憶體一直到本檔案結束釋放記憶體,存放在靜態儲存區的區域性變數並不隨著區域性程式的結束而被釋放,但是其他函式或復合語句也不能引用。存放在靜態儲存區的變數不賦初值則自動為0,全域性變數和靜態變數的初值是在編譯時指定的;

動態儲存區儲存:如一些不加static的區域性變數均存放在動態儲存區,這些變數隨著定義而開始,隨著區域性程式的結束而被釋放,下次執行再次重新定義。存放在靜態儲存區的變數不賦初值初值不確定;

關於extern和static的說明:extern可以擴充套件全域性變數的範圍,而static則可以限制這種擴充套件;extern只是宣告乙個變數,並不會再次分配儲存空間。

如:在f1檔案中定義的全域性變數a,在f2中使用這個變數需要extern a;在f1檔案中如果定義static的全域性變數a,其他檔案就無法使用了;

關於變數的作用域和儲存方式

變數的作用域和儲存方式 按作用域分 全域性變數 在所有函式外部定義的變數叫全域性變數 全域性變數適用範圍 從定義位置開始到整個程式結束區域性變數 在乙個函式內部定義的變數或者函式的形參,統稱為區域性變數 void f int i i 和j 都是區域性變數 區域性變數使用範圍 只能在本函式內部使用 d...

變數儲存型別 作用域

auto 作用域和壽命 只能做區域性變數 在函式內或復合語句內定義的自動變數可以省略auto,而在外部定義的無auto的變數顯然不是自動變數 外部變數,即 全域性變數 的壽命和作用域是全域性的 register 作用域和壽命 同auto,即 區域性可見 分配通用暫存器的條件 1 有空閒的暫存器 2 ...

變數的作用域 鏈結和儲存時期

自動變數具有 塊作用域 空連線和自動儲存時期。它們是區域性的,為定義它們的 塊 通常是乙個函式 所私有。暫存器變數與自動變數具有相同的屬性,但編譯器可能使用速度更快的記憶體或暫存器來儲存它們。無法獲取乙個暫存器變數的位址。具有靜態儲存時期的變數可能具有外部鏈結 內部鏈結或空連線。當變數在檔案的所有函...