关于c ++:数组下标的无效类型’int [int]’ – 多维数组

Invalid types 'int[int]' for array subscript - multi-dimensional array

本问题已经有最佳答案,请猛点这里访问。

我收到一个"数组下标错误的无效类型"int[int]。我也搜索了同样的内容,但之前问过Q的相关对象。这是一个简单的片段。

0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    #include<iostream>
    #include<cmath>
    using namespace std;

   int main()
 {
 int *a;
 a = new int a[10][10];     //Line 8
  for(int z=0;z<10;z++)
  {
        for(int y=0;y<10;y++)
        {
            a[z][y]=y;                    // Line 13
            cout <<"\t"<<a[z][y]<<endl;   // Line 14
        }
  }
 return 0;
 }

Error

  • 第8行错误:应在"a"之前输入";"

  • 第13行错误:数组下标的类型"int[int]"无效

  • 第14行错误:数组下标的类型"int[int]"无效

  • 首先,你有一个外来的a

    2

    你的意思是只写new int[10][10]

    第二,固定表达式没有int*类型。它有int(*)[10]型。你不能把它分配给一个int*,你必须这样做两次:

    1
    2
    3
    4
    5
    6
    7
    8
    int** a;
    a = new int*[10];
    for (int i = 0; i < 10; ++i) {
        a[i] = new int[10];
        for (int j = 0; j < 10; ++j) {
            a[i][j] = j;
        }
    }

    第三,更喜欢使用std::vector> a;,这样可以节省很多其他问题。或者(如Ildjarn指出的)std::array, 10>,如果这些尺寸保持不变。


    你有错别字:

    1
    2
     a = new int a[10][10];     //Line 8
                 ^ ~~~~ !

    删除这个

    另外,您分配数组的方式是错误的,它应该是:

    1
    2
    3
    4
    int **a;
     a = new int *[10];     //Line 8
     for(int i = 0; i < 10; ++i)
        a[i] = new int[10];