程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> 有關c語言中static的問題

有關c語言中static的問題

編輯:C語言問答

有關c語言中static的問題

int func(int n)

{static int m=0;

m=m+n;

return(m);}

main()

{int i,a=0;

for(i=1;i<=4;i++)

a+=func(i);

printf("%d\n",a);}

retutrn 0;

}

這樣輸出的結果是什麼?如果去掉static後輸出的結果又是什麼?為什麼???

最佳回答:

未去掉 static 時,輸出結果為 20;去掉 static 後,結果為 10。

原因:

        static 關鍵字標識一個全局變量,也就是這個變量在超出自己的作用域後仍然有效,如果去掉後, 變量 m 在它的作用域之後將被擦除。上例中,用 static 標識過的 m,在每次執行完 func 函數後都將保存起來,當下一次執行 func 函數時,m 的值將被再次利用,相當於是 1+3+6+10 = 20;沒有用 static 標識的 m,在每次執行完 func 函數後都將被從棧中擦除,當下一次執行 func 函數時,m 的值每次都被賦為 0,相當於是 1+2+3+4 = 10。

        不知道你能理解否。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved