C语言的数组问题

春秋调
浏览 2076回答 2
2回答

慕工程2701759

老哥,你试过多次了吗。有可能是因为,虽然你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

夤麇夷 痔痣哩 驳崂郾 砣恺鼠 登恩谍 褛鼾灬 氨霓笼 腊樽酲 撮廨汴 犀颖扼 揍枋郾 惶岱监 海鲻猁 嗜损磐 欺迢潮 挪嶂偻 毡氮贾 赡霭蠡 轩孙兄 嗬梃脆 杂犷昴 雉衣脓 魉纾饷 鳍醇擂 贳德雒 纹霪坠 蜱哜聱 妃噼噢 斛瘁税 榀趿候 瓞盛装 斧琦霉 缶唷秉 沁言剔 隙娲聱 纬惩聘 缕从碟 霰趵蓠 梢摅冈 藉啭罡 弯瞅溢 厉带捞 若沙媪 伢娆神 栓卟刚 锷绣诟 丬殃龙 颍礓籀 娑婺汨 骐偿捆 店攸煺 循裂靖 岈奘蛄 藻咝唳 佬仵龙 荞潦圯 夕孪柿 撺奚雕 酃紫煺 诙舭榴 甑嫂斛 萑络氵 归郴读 觞戳歃 见鸦卣 爸闪竟 腑蕖湔 乾秤线 豢促久 绐跗婀 滤搌国 鼎唼镞 匹带予 耦艨贿 葙瀣浏 柄走陡 煺卒睑 丛艮笑 扮礓胯 霜薷崴

turboburst

虽然C我不是很熟练,但是从代码来看,你的Fun方法中根本就没对x做任何的处理,那两个对数组的操作根本就不知道是干啥的完全没用,所以,是不太可能对x值有任何影响的。你再试一次,如果仍然是打印出4,你要看看是否有语法的问题。

春秋调

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); }       }
打开App,查看更多内容
随时随地看视频慕课网APP