我是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.一个完整的整数空间而不是指定的值。有人可以在答案中解决这个问题吗?除了初始化数组之外,我没有更改任何代码。
答案 0 :(得分:9)
你的语法错了。
int a[2][2][3] = { // Initialize entire variable
{ // 1 of 2 (leftmost array)
{ 1, 2, 3 }, // 1 of 2 (inner array)
{ 4, 5, 6 }, // 2 of 2 (inner array)
},
{ // 2 of 2 (leftmost array)
{ 7, 8, 9 }, // 1 of 2 (inner array)
{ 10, 11, 12 }, // 2 of 2 (inner array)
},
}
您展示的内容是int [8][2]
。
答案 1 :(得分:6)
按照以下方式更改代码。你可以看到有两个组包含两个元组,每个元组都有两个元素。
int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = {
{ {1,1},{2,10} },
{ {4,20},{5,25} }
};
请查看以下示例以使其更清晰
int arr[2][3][4] = {
{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },
{ {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} }
};
如您所见,有两组,每组包含三组,每组4个。
答案 2 :(得分:0)
您声明一个2x2x2数组,但将其定义为2x8数组。
此外,当您打印数组的内容时,使用MAX_ *作为索引而不是循环变量。
#include <iostream>
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}, {1,-1}
},
{
{2,10}, {2,-10}
}
};
for(int Row = 0; Row < MAX_ROW; ++Row)
for(int Col =0; Col < MAX_COL; ++Col)
for(int Height = 0; Height < MAX_HEIGHT; ++Height)
std::cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] << std::endl;
return 0;
}
答案 3 :(得分:0)
你的数组MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT]
只能容纳2 * 2 * 2 = 8个元素,
但是
{ {1,1},
{2,10},
{3,15},
{4,20},
{5,25},
{6,30},
{7,35},
{8,40} };
有16个元素。 所以初始化程序太多了
答案 4 :(得分:0)
除了错误的数组初始化之外,其他人已经指出你在打印时也有错误。你总是打印出甚至不存在的相同元素(这是未定义的行为)。
cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[Row][Col][Height] << endl;