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。
不知道你能理解否。