【发布时间】:2020-10-29 16:03:26
【问题描述】:
创建这个x.c 测试文件:
int main(void)
{
char x[2] = {3};
return x[2];
}
然后运行
gcc x.c; ./a.out; echo $?
结果是:64。
为什么是64?
顺便说一句,为什么我们使用
return x[1];
我们得到0?为什么{3} 也没有初始化x[1]?
【问题讨论】:
-
你撬开一个属于别人的、你无权使用的保险箱,发现了 64 美元。为什么是 64 美元?为什么不是空的?为什么不是 10 或 100 或 1000 或吉娃娃?可能是因为拥有保险箱的人可以随意存放他们喜欢的东西吗?
-
关于数组的部分初始化,请看:stackoverflow.com/questions/15520880/…
-
@Lundin 为什么如果我们添加
x[2] = 5;返回值是5? -
因为当您将 5 美元放入您一直闯入的保险箱时,警察没有抓住您。并且您很幸运,所有者没有出现更改内容。
-
@Lundin 在这种情况下不应该发生“分段错误”吗?
标签: arrays c initialization