c 筆記 區域性物件

2021-10-12 19:55:26 字數 908 閱讀 4173

二、自動物件

三、區域性靜態物件

c++語音中,名字有作用域,物件有生命週期:

一:名字的作用域是程式文字的一部分,名字在其中可見。

二:物件的生命週期是程式執行過程中對該物件存在的一段時間。

形參和函式體內部定義的變數統稱為區域性物件。它們對函式而言是「區域性」的,僅在函式的作用域可見,同時區域性變數還會隱藏在外層作用域中同名的其他所有宣告中。

在所有函式體之外定義的物件存在於程式的整個執行過程中。此類物件在程式啟動時被建立,直到程式結束才會銷毀。區域性變數的生命週期依賴於定義的方式。

把只存在於塊執行期間的物件稱為自動物件。當塊的執行結束後,塊中建立的自動物件的值變成未定義的了。

形參是一種自動物件。函式開始時為形參申請儲存空間,因為形參定義在函式體內作用域之內,所以一旦函式終止,形參也被銷毀。

令區域性變數的生命週期貫穿函式呼叫及之後的時間。可以將區域性變數定義成static型別從而獲得這樣的物件。區域性靜態物件在程式的執行路徑第一次經過物件定義語句時初始化,並且直到程式終止才被銷毀,在此期間即使物件所在的函式結束執行也不會對它有所影響。

舉個例子:下面的函式統計它自己被呼叫了多少次

size_t count_calls()

intmain

(void

)

控制流第一次經過ctr的定義之前,ctr被建立並初始化為0.每次呼叫ctr加1並返回新值。每次執行count_calls函式時,變數ctr的值都已經存在並且等於函式上一次退出時ctr的值。因此,第二次呼叫時ctr的值是1,第三次呼叫時ctr的值是2,以此類推。

如果區域性靜態變數沒有顯式的初始值,它將被執行初始化內建型別的區域性靜態變數初始化為0。

C 之全域性物件,區域性物件,靜態區域性物件

先說兩個概念 作用域 scope 和生命週期 lifetime 作用域 名字的作用域指的是知道該名字的程式文字區域 生命週期 物件的生命週期指在程式執行過程中物件存在的時間 全域性物件,顧名思義是全域性的物件,其作用域是整個程式文字,其物件的宣告週期是整個程式的執行過程 區域性物件 一般說的區域性變...

C 之區域性物件(自動物件和靜態區域性物件)

1 自動物件 預設情況下,區域性變數的生命期侷限於所在函式的每次執行期間。只有當定義它的函式被呼叫時才存在的物件稱為自動物件。自動物件在每次呼叫函式時建立和撤銷。該型別區域性變數儲存在棧上,在動態儲存區。區域性變數所對應的自動物件在函式控制經過變數定義語句時建立。如果在定義時提供了初始化,那麼每次建...

C 返回區域性物件

引用 看做乙個靜態的指標 const 指標 引用是c 中的概念,引用既不是變數的拷貝,也不是指向變數的指標 相對於指標 引用被建立同時必須被初始化 不能有null引用,必須與合法儲存單元關聯 引用被初始化,引用關係就不能改變 我的理解是引用是編譯器產生的變數表中變數的乙個名字,類似於表中這個變數的索...