数组下标的无效类型“int \[int\]”

新手上路,请多包涵

这段代码抛出了标题中给出的编译错误,谁能告诉我要改变什么?

 #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");

}

提前致谢

原文由 user33061 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您正在为一个三维数组下标 myArray[10][10][10] 四次 myArray[i][t][x][y] 。您可能需要向数组添加另一个维度。还可以考虑像 Boost.MultiArray 这样的容器,尽管此时这可能超出了您的想象。

原文由 coppro 发布,翻译遵循 CC BY-SA 2.5 许可协议

为了完整起见,此错误也可能发生在不同的情况下:当您在外部范围内声明一个数组,但在内部范围内声明另一个具有相同名称的变量时,会隐藏数组。然后,当您尝试索引数组时,您实际上是在访问内部范围内的变量,它甚至可能不是一个数组,或者它可能是一个维度较少的数组。

例子:

 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
}

原文由 Vishal Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏