[Quote]
/* E5.4 */
#include <stdio.h>
int main(void)
{
double data[12][5];
int i=0; //总共有多少个数字
double row=2.0; //初始数字
for(i=0;i<=11;i++)
{
data[i][0]=row;
printf(“\n%d\t%.2f”,i,data[i][0]);
row=row+0.1;
}
return 0;
}
[/QUOTE]
我是C的初学者,这个程序本身没有问题,是一本教材当中的例程。
出于测试的目的,我把 for(i=0;i<=11;i++) 中的 11, 逐一的往上加,12,13,14的话,程序都报错,出现
[Quote]
应用程序错误
0×40099999 指令引用的0×40099999内存。该内存不能为”read”
要终止程序,请单击确定
要调试程序,请单击取消
[/Quote]
这里我也能理解,因为超出了数组定义的范围,
但是继续增加i, 15,16,17, 18……..之后的话,程序又可以正常的运行了。
这我就非常不理解了,特此求教大家。
说说我的环境:
安装c-free后怎么调试都不通,所以用editplus写C,
编译的话 还是用的c-free安装目录下的gcc
[Quote]
[/Quote]
>> 本文固定链接: http://www.vcgood.com/archives/2459
我把你的程序验证了,原程序是没有问题的!你出错的原因是把for循环的终值改变了,但是你没有改变数组的空间.
学好指针就明白了,当数组在内存开辟的连续空间被数据写满后,它的后继空间(12,13,14次循环所需写入数据的内存空间)有重要数据在处理,强行写入数据肯定报错……呵呵,C处理数组的方式就是用指针的方式处理的,指针呢就是对应的内存地址了
感谢楼上两位的答复,看起来aa逆天比shujiantianxia的要正确一些. 其实我能理解12,13,14 为什么会报错, 不理解的是15—19… 是正确的。
多谢二位!我再继续学习中…