我已經試過這樣的事情:定義全局變量在C局部變量
int globalvar=10;
void print()
{
printf("%d \n",globalvar);
}
int main(){
int globalvar=5;
printf("%d \n",globalvar);
print();
while (1);
return 0;
}
,然後輸出就這樣
5
10
我的結論是C已創建本地實例主要是內部的「globalvar」,它的初始值是由printf輸出的值10。
我沒關係與這一點,但我弄糊塗了一些新的點:
globalvar這是前主初始化應該有印花布程序的範圍與DS的同一個內存位置在這種情況下,在函數中本地定義了一個具有相同名稱的變量(ex:main)時會發生什麼?
第二個問題與鏈接器有關:鏈接器如何處理這兩個相同名稱的變量,以便它以執行的方式執行?
PS:downvoting的問題後,我想說,我真的搜索的問題,我沒有發現過類似的問題,我還以爲問一個問題一樣,這將是對別人有用。 我希望我不是misunderstod
您是_shadowing_範圍內的變量名稱。編譯器應該警告你這個,所有的警告級別。 –