2 回答
已采纳
慕工程2701759
TA贡献16条经验 获得超17个赞
老哥,你试过多次了吗。有可能是因为,虽然你arr【】没什么作用,但你arr[4],是越界了,那么巧了,刚好你arr[4]就是你x的存储空间,于是就可以出现输出4的情况。我看过有道题是这样死循环的
main() { int arr[10],i; for(i=0;i<=10;i++) { arr[i]=0; } }
可以看到i=10,越界,;刚好定义是int arr[10],i; i被分配到数组后一个空间。越界时候操作了arr[10]=0,此时arr[10]实际也是i的空间,导致i又变成0,判断又小于10,死循环。
不过据说现在有些编译器都会在数组后面的空间空一格,隔开变量。
不过大多编译器都能提示编译错误。
慕的地6079101
TA贡献3593条经验 获得超0个赞
夤麇夷
痔痣哩
驳崂郾
砣恺鼠
登恩谍
褛鼾灬
氨霓笼
腊樽酲
撮廨汴
犀颖扼
揍枋郾
惶岱监
海鲻猁
嗜损磐
欺迢潮
挪嶂偻
毡氮贾
赡霭蠡
轩孙兄
嗬梃脆
杂犷昴
雉衣脓
魉纾饷
鳍醇擂
贳德雒
纹霪坠
蜱哜聱
妃噼噢
斛瘁税
榀趿候
瓞盛装
斧琦霉
缶唷秉
沁言剔
隙娲聱
纬惩聘
缕从碟
霰趵蓠
梢摅冈
藉啭罡
弯瞅溢
厉带捞
若沙媪
伢娆神
栓卟刚
锷绣诟
丬殃龙
颍礓籀
娑婺汨
骐偿捆
店攸煺
循裂靖
岈奘蛄
藻咝唳
佬仵龙
荞潦圯
夕孪柿
撺奚雕
酃紫煺
诙舭榴
甑嫂斛
萑络氵
归郴读
觞戳歃
见鸦卣
爸闪竟
腑蕖湔
乾秤线
豢促久
绐跗婀
滤搌国
鼎唼镞
匹带予
耦艨贿
葙瀣浏
柄走陡
煺卒睑
丛艮笑
扮礓胯
霜薷崴
turboburst
TA贡献26条经验 获得超15个赞
虽然C我不是很熟练,但是从代码来看,你的Fun方法中根本就没对x做任何的处理,那两个对数组的操作根本就不知道是干啥的完全没用,所以,是不太可能对x值有任何影响的。你再试一次,如果仍然是打印出4,你要看看是否有语法的问题。
春秋调
TA贡献5条经验 获得超1个赞
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 关注
- 2090 浏览
添加回答
举报
0/150
提交
取消