读书人

三维数组,该怎么解决

发布时间: 2012-02-19 19:43:38 作者: rapoo

三维数组
#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};

就可以。

读书人网 >C++

热点推荐