【发布时间】:2013-10-10 07:44:32
【问题描述】:
我是 C++ 新手,我正在尝试创建一个简单的静态 3 维数组,然后在控制台中打印出来。
这是我当前的代码:
#include <iostream>
using namespace std;
int main()
{
const int MAX_ROW = 2;
const int MAX_COL = 2;
const int MAX_HEIGHT = 2;
int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = { {1,1},
{2,10},
{3,15},
{4,20},
{5,25},
{6,30},
{7,35},
{8,40} };
for(int Row = 0; Row < MAX_ROW; ++Row)
{
for(int Col =0; Col < MAX_COL; ++Col)
{
for(int Height = 0; Height < MAX_HEIGHT; ++Height)
{
cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] << endl;
}
}
}
return 0;
}
当我编译时,编译器会通知我"error: too many initializers for ‘int [2][2][2]"
其他问题使用了我不熟悉的指针。
提前谢谢你!
编辑: 语法错误,因此我已使用正确的相应代码更正它,如下所示。现在在程序的输出中,每个数组空间都是 32767。一个完整的整数空间,而不是分配的值。任何人都可以在他们的答案中解决这个问题吗?除了初始化数组之外,我没有更改任何代码。
【问题讨论】:
-
您正在分配行长为 2 的 3X3 数组。但您仅使用两个维度进行初始化,每个维度中有 8 个元素。添加第三个维度并在每个维度上使用更少的元素或增加每个维度的大小
-
发布一个简洁、完整的示例程序的大 +1 - 这太罕见了!
-
好问题。但是,在 C++ 中执行此操作的常规方法是分配一个连续的内存块并重载
operator () (unsigned,unsigned,unsigned)以进行元素访问(const 和非 const 版本)。 -
下班后别忘了用delete,看this