2 回答

TA貢獻(xiàn)16條經(jīng)驗(yàn) 獲得超17個(gè)贊
老哥,你試過(guò)多次了嗎。有可能是因?yàn)?,雖然你arr【】沒(méi)什么作用,但你arr[4],是越界了,那么巧了,剛好你arr[4]就是你x的存儲(chǔ)空間,于是就可以出現(xiàn)輸出4的情況。我看過(guò)有道題是這樣死循環(huán)的
main() { ????int?arr[10],i; ????for(i=0;i<=10;i++) ????{ ????????arr[i]=0; ????} }
可以看到i=10,越界,;剛好定義是int arr[10],i; ? ?i被分配到數(shù)組后一個(gè)空間。越界時(shí)候操作了arr[10]=0,此時(shí)arr[10]實(shí)際也是i的空間,導(dǎo)致i又變成0,判斷又小于10,死循環(huán)。
不過(guò)據(jù)說(shuō)現(xiàn)在有些編譯器都會(huì)在數(shù)組后面的空間空一格,隔開(kāi)變量。
不過(guò)大多編譯器都能提示編譯錯(cuò)誤。

TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊

TA貢獻(xiàn)26條經(jīng)驗(yàn) 獲得超15個(gè)贊
雖然C我不是很熟練,但是從代碼來(lái)看,你的Fun方法中根本就沒(méi)對(duì)x做任何的處理,那兩個(gè)對(duì)數(shù)組的操作根本就不知道是干啥的完全沒(méi)用,所以,是不太可能對(duì)x值有任何影響的。你再試一次,如果仍然是打印出4,你要看看是否有語(yǔ)法的問(wèn)題。

TA貢獻(xiàn)5條經(jīng)驗(yàn) 獲得超1個(gè)贊
void Fun(int x)
{
??????? int arr[2] = {0};
??????? arr[4] = 4;
??????? printf("%d\n",x)
}
int main(int argc, char* argv[])
{
????? int x = 1;
????? Fun(x);
}
?????
}
- 2 回答
- 1 關(guān)注
- 2178 瀏覽
添加回答
舉報(bào)