刚刚开始学数组,一大堆的疑问
<div class="blockcode"><blockquote>#include<stdio.h>void main()
{
int a,b={0,1,1,1,1,1,1,1,11,1};
for(a=9;a>=0;a--)
{
printf("%d\n", b);
}
}</blockquote></div><br />
就是上面这个代码,使用for语句循环打印这个数组的值,但是那里我故意填了111的(我只定义了10个应该会报错的吧)。我想看看会怎样的,但编译器没报错,他没有,没有报错呀!还打印了这个结果,到底怎么个情况呢,求解答!刚刚开始接触数组 用C语言标准的话来解释,数组越界会产生“不可预知的错误”。当然,如果你C语言已经学透,并且想专研C语言标准之下的东西,你可以研究下汇编语言。。。以及它和C语言之间的关系。。。研究完就知道,数组越界后编译器的行为是可以预测的(但这个对于C语言初学者完全没必要,你现在要做的,是准售规则,尽快能够用C语言写出实用的程序) 你这个应该是越界了~然后b中取得是一个完全没有意义的数据,可能只是刚好取到了920,我运行之后是0. 仰望天上的光 发表于 2015-5-3 22:25
用C语言标准的话来解释,数组越界会产生“不可预知的错误”。当然,如果你C语言已经学透,并且想专研C语言 ...
哦,明白了!!谢谢! Mr.屎壳螂 发表于 2015-5-3 22:38
你这个应该是越界了~然后b中取得是一个完全没有意义的数据,可能只是刚好取到了920,我运行之后是0.
谢谢帮忙解释!! ipry0816 发表于 2015-5-3 22:40
sorry,没看题!
{:1_1:} 前提声明: 我也是新手 猜的 。
你输出的是a,应该就是 a数组首地址 的后 111 位 ,根据内存来看,应该输出的是内存中的数字。是不可预知的数字。 Zhangchi 发表于 2015-5-6 23:11
前提声明: 我也是新手 猜的 。
你输出的是a,应该就是 a数组首地址 的后 111 位 ,根据内存来看 ...
版主大大说我们初学的不需要知道怎么得到那个数的,只需要先学会常用的那些就OK拉!这个他们说是越界了 前面的版主已经解释的很详细了,在这里我也不做过多的解释了{:7_131:}
页:
[1]