首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

三维数组,该怎么解决

2012-02-19 
三维数组#include iostreamusingnamespacestdintmain(){intx,y,zinttotal0inta[1][1][1]{0}for(x

三维数组
#include <iostream>
using   namespace   std;



  int   main()
  {
  int   x,y,z;
  int   total=0;
  int   a[1][1][1]={0};
for(x=0;x <=1;x++)
      for(y=0;y <=1;y++)
            for(z=0;z <=1;z++)
    {
    cout < <a[x][y][z] < <endl;
    total++;
    }
    cout < < "一共: " < <total < < "个 " < <endl;
                 
  return   0;
}

``````````````````````````````````
0
1
2
1
4
1
0
1
一共:8个
Press   any   key   to   continue

为什么不全都是零呢?
要是想全部初始化为0改怎样改呢?



[解决办法]
C++语言访问数组时的下标是从0开始的,因此最大下标比相应维的长度少1,你定义的是int a[1][1][1],最多可以访问到a[0][0][0],你怎么反而让x,y和z都到 <=1才终止啊。
是不是你本来是想定义:
int a[2][2][2]={0};
啊?
[解决办法]
a[1][1][1],只有一个数据,而不是8个,所以你只是给a[0][0][0]赋了初值
其它的是和数组没有关系
[解决办法]
你原来的访问已经越界了,输出的是别的一些值。
[解决办法]
你虽然是三维数组,每一维的数组长度都是1,只有一个元素,从何来八个元素?

a[1]表示数组长度是1,a[0]则表示这个数组中的第一个元素。

int a[2][2][2]={0};

就可以。

热点排行