2017-09-18 60 views
-4

如果我們定義一個全局變量 int x; 和函數體內部定義了另一個變量int x;會怎樣。如何引用一個全局變量與函數體內的本地變量同名?

函數'x'內部總是引用局部變量'x'。現在,如果用戶必須在非常函數內引用全局變量x,那麼如何實現這一點?

+0

爲什麼被標記爲C和Python? –

+0

在C你不能。如果您隱藏了一個符號,那麼無法訪問它。 –

+0

爲什麼你需要與變量相同的名字? –

回答

2

由於您的問題被標記爲「C」,我將回答有關該語言。其他語言可能會提供語法糖或機制來做你想做的事。

定義使用可變存在於更大範圍的名稱的變量稱爲遮蔽:內定義陰影外一個。

下面是一個例子:

int x = 42; 

int main() { 
    int x = 0; // Here, `x` shadows the global `x`. 
    printf("%d\n", x); // Prints '0' 
} 

在C中,沒有辦法來獲得被遮蔽的變量的值。

在風格計劃中,陰影通常被認爲是一種不好的做法,因爲它會讓您的代碼更清晰,更難以重構。

+0

正確。請將「據我所知」更改爲「In C」,因爲C無法獲得陰影變量。 –

+0

感謝您的確認。 :) – RichouHunter