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

2021-06-05 08:08:21 字數 561 閱讀 8700

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

具有靜態儲存時期的變數可能具有外部鏈結、內部鏈結或空連線。當變數在檔案的所有函式之外宣告時,它是乙個具有檔案作用域的外部變數,具有外部鏈結和靜態儲存時期。如果在這樣的宣告中再加上關鍵字static,將獲得乙個具有靜態儲存時期、檔案作用域和內部鏈結的變數。如果在乙個函式內使用關鍵字static宣告變數,變數將具有靜態儲存時期、**塊作用域和空連線。

當程式執行到包含變數宣告的**時,給具有自動儲存時期的變數分配記憶體,並在**塊結束時釋放這部分記憶體。如果沒有初始化,這樣的變數具有乙個無效值。在程式編譯時給具有靜態儲存時期的變數分配記憶體,並且在程式執行時一直保持。如果沒有初始化,這樣的變數被設定為0。具有**塊作用域的變數區域性於包含變數宣告的**塊。

具有檔案作用域的變數對檔案中在它的宣告之後的所有函式可見。如果乙個檔案作用域變數具有外部鏈結,則它可被程式中的其他檔案使用。如果乙個檔案作用域變數具有內部鏈結,它只能在宣告它的檔案中使用。

五種儲存變數補充 作用域和儲存時期

1.作用域指的是 在某個區域中可以 訪問 該變數 2.儲存時期指的是 表示該變數在程式執行期間一直存在,能不能 訪問 就是另一回事了 具有 塊作用域或者函式作用域但是卻是靜態儲存時期的 舉個例子 includevoid test void int main int count for count 1...

變數儲存持續性 作用域和鏈結性

靜態持續變數3種鏈結性 外部鏈結性 可在其他檔案中訪問 內部鏈結性 只能在當前檔案中訪問 無鏈結性 只能在當前函式或 中訪問 要想建立鏈結性為外部或內部的靜態持續變數,必須在 塊外面宣告它,要建立沒有鏈結性的靜態持續變數,必須在 塊內宣告它。1.單定義規則 變數只能有一次定義,c 提供了兩種變數宣告...

變數的作用域和儲存方式

按作用域可分為 區域性變數 函式級區域性變數,復合語句級區域性變數,這種型別的變數在本函式或本復合語句內有效,在其他範圍內無效。按儲存方式可分為 靜態儲存區儲存 全域性變數和static區域性變數全部存放在靜態儲存區,從定義開始占用記憶體一直到本檔案結束釋放記憶體,存放在靜態儲存區的區域性變數並不隨...