3 回答

TA貢獻(xiàn)27條經(jīng)驗(yàn) 獲得超28個(gè)贊
這個(gè)8是個(gè)巧合。這是個(gè)沒初始化的值,可以使任何值。
說明一下,靜態(tài)局部變量,所謂靜態(tài),就是生命周期從第一次初始化到整個(gè)程序結(jié)束,而且只初始化一次,如果下次再碰到,會(huì)自動(dòng)跳過初始化這一行,所以下次調(diào)用fn()只會(huì)把x加倍,而不會(huì)重新變回1。
所謂局部,就是它只能在fn()這個(gè)函數(shù)里可見,你在別的地方比如main()函數(shù)里看不到它。所以你現(xiàn)在在main里又新定義了一個(gè)x,這個(gè)x跟前面那個(gè)靜態(tài)局部x沒有任何關(guān)系。而且你沒有初始化它,所以x會(huì)等于一個(gè)不確定的值。你再跑幾遍,或者在int x之前插個(gè)int i,j,k; 之類的語(yǔ)句,可能還會(huì)打出不同的值。

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超1個(gè)贊
沒錯(cuò),fn里面的x是靜態(tài)變量,和main里面的x是無關(guān)的;之所以main里面的x會(huì)等于8,原因是main里面的x沒有初始化,是沒有值得,所以main函數(shù)直接將x所在的內(nèi)存空間里面的數(shù)取出,這個(gè)數(shù)是上一個(gè)使用該內(nèi)存空間的程序所留下的,你如果將這個(gè)C語(yǔ)言重復(fù)運(yùn)行幾次,得到的x結(jié)果應(yīng)該是不一樣的。(這個(gè)知識(shí)點(diǎn)在指針與內(nèi)存里面)

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超0個(gè)贊
- 3 回答
- 0 關(guān)注
- 1665 瀏覽
添加回答
舉報(bào)