2012-12-12 252 views
0

將靜態變量作爲參數傳遞給函數會有什麼問題嗎?該程序打印1 0.所以,靜態變量也像平常一樣按值傳遞?將靜態變量作爲參數傳遞給函數

#include<stdio.h> 
int main() 
{ 
    static main; 
    int x; 
    x=call(main); 
    printf("%d %d",x,main); 
} 
int call(int address) 
{ 
    address++; 
    return address; 
} 
+4

請注意,C使用按值調用* everything *。改變通話中的參數不會成爲任何事情。 – fuz

回答

1

是,靜態變量被傳遞,就像任何其他變量。

但我希望你有一些編譯錯誤,當你命名與函數相同的名稱變量。

+1

我不喜歡這個措辭。變量不會超過傳遞的表達式。 – 2012-12-12 06:25:34

+0

這是個問題。只有變量的值被壓入堆棧並且函數獲得副本在這裏似乎沒有幫助。 –

+0

「靜態變量像任何其他變量一樣被傳遞」仍然沒有改進或澄清而被嚴格地表述。 – 2012-12-12 06:27:05

0

變量傳遞與靜力學沒有區別。

注意,你需要在你的代碼的類型:static int main;

而且我也不會命名變量main,因爲這可能是一個保留關鍵字。

+1

'main'不是保留標識符,您可以使用它來聲明變量。 – ouah

相關問題