这段代码会引发标题中给出的编译错误,有人能告诉我要改变什么吗?
#include <iostream>
using namespace std;
int main(){
int myArray[10][10][10];
for (int i = 0; i <= 9; ++i){
for (int t = 0; t <=9; ++t){
for (int x = 0; x <= 9; ++x){
for (int y = 0; y <= 9; ++y){
myArray[i][t][x][y] = i+t+x+y; //This will give each element a value
}
}
}
}
for (int i = 0; i <= 9; ++i){
for (int t = 0; t <=9; ++t){
for (int x = 0; x <= 9; ++x){
for (int y = 0; y <= 9; ++y){
cout << myArray[i][t][x][y] << endl;
}
}
}
}
system("pause");
}
提前致谢
答案 0 :(得分:13)
您正在订阅三维数组myArray[10][10][10]
四次myArray[i][t][x][y]
。您可能需要为数组添加另一个维度。还要考虑像Boost.MultiArray这样的容器,尽管此时可能已经超出了你的想法。
答案 1 :(得分:5)
要改变什么?除了3维或4维数组问题,你应该摆脱幻数(10和9)。
const int DIM_SIZE = 10;
int myArray[DIM_SIZE][DIM_SIZE][DIM_SIZE];
for (int i = 0; i < DIM_SIZE; ++i){
for (int t = 0; t < DIM_SIZE; ++t){
for (int x = 0; x < DIM_SIZE; ++x){
答案 2 :(得分:2)
int myArray[10][10][10];
应该是
int myArray[10][10][10][10];
答案 3 :(得分:1)
您正尝试使用4个去参考
来访问3维数组您只需要3个循环而不是4个循环,或int myArray[10][10][10][10];
答案 4 :(得分:0)
我认为你初步确定了一个3d数组,但是你试图访问一个4维数组。
答案 5 :(得分:0)
仅出于完整性考虑,在不同情况下也会发生此错误:当您在外部作用域中声明一个数组,但在内部作用域中声明另一个具有相同名称的变量时,则会遮蔽该数组。然后,当您尝试为数组建立索引时,实际上是在内部作用域中访问变量,该变量甚至可能不是数组,或者可能是维数较少的数组。
示例:
int a[10]; // a global scope
void f(int a) // a declared in local scope, overshadows a in global scope
{
printf("%d", a[0]); // you trying to access the array a, but actually addressing local argument a
}