C 中區域性變數可以和全域性變數重名嗎?

2021-08-05 21:50:45 字數 630 閱讀 4592

c++中區域性變數可以和全域性變數重名嗎?

這是乙個作用域的問題。乙個宣告將乙個名字引進乙個作用域;區域性變數(通常在函式中定義)的作用域是從宣告的那一點開始,直到這個宣告所在的塊結束為止(乙個塊就是由{}圍起來的一段**)。全域性變數(在所有函式、類、命名空間之外定義)的作用域從宣告的那一點開始,直到這個宣告所在的檔案的結束。

與全域性變數重名的區域性變數可以遮蔽全域性變數,如果想在塊內使用全域性變數需要通過作用域解析運算子::引用。 見下例:

//global_local.cpp

#include

using namespace std;

int x ;   //定義乙個全域性變數x

int main()

上述例子輸出結果為:

global x initial value = 0

local x initial value = 11239412

after assignment global x = 6

after assignment local x = 5

從上面的例子還可以看出,如果沒有顯示初始化,那麼全域性變數、靜態區域性變數等靜態物件會被自動初始化為適當型別的0,而區域性物件(也稱為自動物件)和在自由儲存區里建立的物件(動態物件或者堆物件)將不會被初始化。

C 中區域性變數可以和全域性變數重名嗎?

c 中區域性變數可以和全域性變數重名嗎?這是乙個作用域的問題。乙個宣告將乙個名字引進乙個作用域 區域性變數 通常在函式中定義 的作用域是從宣告的那一點開始,直到這個宣告所在的塊結束為止 乙個塊就是由 圍起來的一段 全域性變數 在所有函式 類 命名空間之外定義 的作用域從宣告的那一點開始,直到這個宣告...

全域性變數與區域性變數重名

函式內部定義的區域性變數與全域性變數重名時,函式在使用該變數的時候會以區域性變數覆蓋全域性變數。也就是只有區域性變數會起效果。在此定義域中賦值等操作時都不會使用到全域性變數。在main函式或其他函式裡定義了區域性變數,同時同名的全域性變數同時也存在,當呼叫乙個使用了該變數的函式 該變數在此函式中無定...

區域性變數能否和全域性變數重名

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...