作用域與生命週期

2021-07-10 18:28:48 字數 932 閱讀 3018

作用域與生命週期是描述了常量,變數,函式的等物件的使用範圍,當程式**中這些物件一旦超過了這個範圍,那麼將出現編譯錯誤。下面我們來研究一下它;

區域性作用域描述的是函式體中變數和函式的適用範圍,每乙個函式都有自己的區域性作用域。在函式體中定義的變數,函式對於外部函式是不可見的看,因為他們在函式的區域性作用域中,對函式復合語句定義的物件在語句外也是不可使用的,因為它也有自己的作用域;區域性變數的生命期短,全域性變數的生命期長;因為區域性變數在定義後的生命在面對第乙個大括號就結束了,而全域性變數的生命週期將在main函式結束時才結束。

例如:

由上可以看到由於a在區域性作用域中定義的在這個作用域外的就不可以使用,所以出現了編譯錯誤。

而如果是:在main這個作用域中定義乙個相同的變數名時。

#includeusing namespace std;

int main()

cout<

同樣在main函式中定義的變數在其他範圍內也不行,如果使用了全域性變數那麼變數的作用域將覆蓋整個函式

例如:#includeusing namespace std;

//int a=30;

void show();

int main()

{ int a=20;

printf("區域性作用域\n");

{ int a=10;

cout<

如果將注釋的解除,那麼這個程式就可以執行了;

那麼,接下來我們在看乙個**:

#includeusing namespace std;

int main()

{ int a=5;

{ cout<5

10 5

這就是另外乙個問題了,當在所在的定義域內找不到輸出的定義,那麼函式將向該定義域上層的定義域中尋找;同樣,我們也可以看到作用域的長短了,在單獨的作用域定義的變數,在作用域外無法使用了。

作用域與生命週期

在c 語言中名字有作用域,物件 變數 有生命週期。如果不理解這兩個概念那麼我們一般會犯很多低階的錯誤。比如返回區域性物件的引用等。include using namespace std return local array int func1 return a return local object...

作用域 生命週期

作用域 能夠被使用的範圍 生命週期 生命的誕生和死亡 在類裡頭,先使用變數,後期到main裡幫助建立生命 在main裡頭作用域的範圍小於等於生命週期的範圍,在使用作用域之前已經預設存在生命週期了 作用域是不考慮生命週期的,因為作用域的線路比執行時候來的條數廣 作用域是製造多條線路,生命週期是執行一條...

作用域和生命週期

1.作用域 可見性 作用域 可見性 指識別符號能夠被使用的範圍 只有在作用域內識別符號才可以被使用。此階段針對編譯和鏈結過程 1 函式中定義的識別符號,包括形參和函式體中定義的區域性變數,作用域都在該函式內,也稱作函式域。2 檔案作用域也稱全域性作用域。定義在所有函式之外的識別符號,具有檔案作用域,...