作用域與生命週期是描述了常量,變數,函式的等物件的使用範圍,當程式**中這些物件一旦超過了這個範圍,那麼將出現編譯錯誤。下面我們來研究一下它;
區域性作用域描述的是函式體中變數和函式的適用範圍,每乙個函式都有自己的區域性作用域。在函式體中定義的變數,函式對於外部函式是不可見的看,因為他們在函式的區域性作用域中,對函式復合語句定義的物件在語句外也是不可使用的,因為它也有自己的作用域;區域性變數的生命期短,全域性變數的生命期長;因為區域性變數在定義後的生命在面對第乙個大括號就結束了,而全域性變數的生命週期將在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 檔案作用域也稱全域性作用域。定義在所有函式之外的識別符號,具有檔案作用域,...