为了账号安全,请及时绑定邮箱和手机立即绑定

C语言的数组问题

C语言的数组问题

C
春秋调 2017-08-11 00:48:00
查看完整描述

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,死循环。

不过据说现在有些编译器都会在数组后面的空间空一格,隔开变量。

不过大多编译器都能提示编译错误。

查看完整回答
1 反对 回复 2017-08-11
?
turboburst

TA贡献26条经验 获得超15个赞

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

查看完整回答
反对 回复 2017-08-11
?
春秋调

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);
}
     
}

查看完整回答
反对 回复 2017-08-11
  • 2 回答
  • 1 关注
  • 2010 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信