黑马程序员技术交流社区

标题: 复习的时候遇到的 [打印本页]

作者: 2014571245    时间: 2014-4-26 13:48
标题: 复习的时候遇到的
本帖最后由 2014571245 于 2014-4-27 10:49 编辑

请问下面程序有什么错误?
   int a[60][250][1000],i,j,k;
   for(k=0;k<=1000;k++)
    for(j=0;j<250;j++)
     for(i=0;i<60;i++)
      a[j][k]=0;
我看了半天,也没有觉得有声明错误啊,谁能指点下?


作者: 兰闻天    时间: 2014-4-26 14:06
int a[60][250][1000],i,j,k;
   for(k=0;k<=1000;k++)//这个地方应该是 k<1000 吧
    for(j=0;j<250;j++)
     for(i=0;i<60;i++)
      a[i][j][k]=0;
作者: blz01003hm    时间: 2014-4-26 14:12
我感觉是电脑分不出那么多内存给你了
这样写就运行得了

int main(void){
  int a[60][250][10],i,j,k;
   for(k=0;k<=10;k++)
    for(j=0;j<250;j++)
     for(i=0;i<60;i++)
      a[i][j][k]=0;
return 0;
}

作者: 2014571245    时间: 2014-4-26 14:43
兰闻天 发表于 2014-4-26 14:06
int a[60][250][1000],i,j,k;
   for(k=0;k

不只这一个简单的错误
作者: 脸皮猴    时间: 2014-4-26 15:05
  1.     int a[60][250][1000],i,j,k;
  2.     for(k=0;k<=1000;k++)
  3.         for(j=0;j<250;j++)
  4.             for(i=0;i<60;i++)
  5.                 a[i][j][k]=0;
  6.     // 有一个错误 for(k=0;k<=1000;k++)这句话应该改为for(k=0;k<1000;k++),不然会数组越界。
  7.     // 但是就算你改为1000了,你这程序可能也运行不了。编译器给你分配不了那么大的内存给你的这个数组。
  8.     // 60 * 250 * 1000 * 4 = 47M!!
复制代码

作者: stevenzhao1977    时间: 2014-4-26 15:20
首先 "for(k=0;k<=1000;k++)" --> k不能等于1000;
然后 ,如果想有整个数组赋值成0 --》
可以在声明时 int a[60][25][1000]={};

再然后 int a[60][250][1000] --->  xcode 可以编译,但运行不了,可能太大了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2