EasyC 自動儲存持續性

2022-09-21 08:30:12 字數 860 閱讀 5146

**微信***:coder梁(id:coder_lt)

自動儲存持續性:

這個概念乍一看有些拗口,其實它很簡單,指的是在函式定義中宣告的變數的儲存持續性是自動的:它們在程式開始執行其所屬的函式或**塊時被建立,在執行完函式或**塊時,它們使用的記憶體被釋放。

在預設情況下,我們在函式中宣告的變數和函式的引數都是自動儲存持續性,它的作用於為區域性,沒有鏈結性。

這裡的鏈結性描述了名稱如何在不同的單元之間共享,鏈結性為外部的名稱可以在檔案之間共享,鏈結性為內部的名稱只能由乙個車程式設計客棧檔案中的函式共享。自動變數jsvqnsd的名稱沒有鏈結性,也就是不能共享。

這段話是一段專業性描述,看不太明白沒有關係。簡單理解,就是說如果我們在main函式當中宣告了乙個變數a,並且在函式test當中也宣告了乙個同樣的變數a。兩者之間是完全獨立的,彼此不會有任何影響,因為它們只有在宣告了它的函式中才能使用。

當程式執行test函式時,tes程式設計客棧t中的a才被建立,當test執行結束,a即被銷毀。

其實變數的作用域的最小劃分並不是函式,而是**塊。我們在**塊當中建立的變數,它的使用範圍作用域就只有當前**塊。例如:

int main()

}我們在main函式當中定義了乙個變數a和乙個變數b,但是這兩個變數定義的位置不同。b定義在了乙個**塊(**塊使用花括號表示)當中,對於a來說,它的作用域是整個main函式,而b只在花括號當中生效。

更有意思的是下面這段**:

int main()

cout << a www.cppcns.comt; endl;

}答案是輸出的結果是5和4,為什麼呢?

因為內部和外部都有乙個變數a,當執行內部**的時候,編譯器隱藏了外部的定義。而程式離開**塊時,外部的定義又重新恢復。

靜態持續性 外部儲存性

外部變數作用域為整個檔案,可以在main 前或者標頭檔案中進行宣告。一方面,若要使用外部變數必須在使用它的所有檔案中進行宣告,另一方面,c 中限制了變數的定義只能進行一次,即單定義規則。所以,若要在多個檔案中使用同乙個外部變數,必須進行以下宣告 extern int i 7 定義外部變數i int ...

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

關於記憶體的知識 c 使用3種 c 11中是4種 不同的方案來儲存資料,這些方案的區別在於資料保留在記憶體中的時間。1.自動變數和棧 自動變數的數目隨函式的開始和結束而增減,因此程式必須在執行時對自動變數進行管理,常用的方法是留出一段記憶體,將其視為棧,以管理動態變數的增減。2.靜態持續變數 和c語...

儲存的持續性和作用域

1 在函式內申明的變數包括引數在函式執行時存在,函式執行結束自動釋放記憶體 2 在函式外定義的變數或者使用static定義的變數,在程式執行過程中都存在 3 使用new分配的記憶體一直存在,直到delete釋放記憶體為止 1 區域性變數a定義它開始直到return 0 變數i從定義開始知道for語句...