首页 > 用户发贴区 > 编程问题提问区 > for循环里边给数组赋值的难题
2008
06-12

for循环里边给数组赋值的难题

[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]


for循环里边给数组赋值的难题》有 3 条评论

  1. shujiantianxia 说:

    我把你的程序验证了,原程序是没有问题的!你出错的原因是把for循环的终值改变了,但是你没有改变数组的空间.

  2. aa逆天 说:

    学好指针就明白了,当数组在内存开辟的连续空间被数据写满后,它的后继空间(12,13,14次循环所需写入数据的内存空间)有重要数据在处理,强行写入数据肯定报错……呵呵,C处理数组的方式就是用指针的方式处理的,指针呢就是对应的内存地址了

  3. 不会C被歧视 说:

    感谢楼上两位的答复,看起来aa逆天比shujiantianxia的要正确一些. 其实我能理解12,13,14 为什么会报错, 不理解的是15—19… 是正确的。

    多谢二位!我再继续学习中…

留下一个回复