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

7uzetpgm  于 2022-12-24  发布在  其他
关注(0)|答案(7)|浏览(293)

下面的代码出现此编译错误:“invalid types 'int[int]' for array subscript"。应该更改哪些内容?

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

}
pxiryf3j

pxiryf3j1#

你要给一个三维数组myArray[10][10][10]加上4个下标,你可能需要给数组增加另一个维度,也可以考虑像Boost.MultiArray这样的容器,虽然这可能是你现在无法理解的。

kh212irz

kh212irz2#

要改变什么?除了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){
zzlelutf

zzlelutf3#

为了完整起见,此错误也可能在不同的情况下发生:当你在外部作用域中声明一个数组,但在内部作用域中声明另一个同名的变量时,隐藏这个数组,当你试图索引数组时,你实际上是在内部作用域中访问变量,它可能不是数组,也可能是一个维数更少的数组.
示例:

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
}
8dtrkrch

8dtrkrch4#

int myArray[10][10][10];

应该是

int myArray[10][10][10][10];
hl0ma9xz

hl0ma9xz5#

您正在尝试访问一个具有4个取消引用的三维数组
您只需要3个循环,而不是4个或int myArray[10][10][10][10];

t3psigkw

t3psigkw6#

我认为您已经初始化了一个3D数组,但您正在尝试访问一个4维数组。

ijxebb2r

ijxebb2r7#

我只是忘了把[]放到数组数据类型的函数参数中,如下所示:
🚨 而不是这个:

void addToDB(int arr) {
    // code
}

请执行以下操作:

void addToDB(int arr[]) {
    // code
}

相关问题