我得到了一个"无效的类型' int [int]'对于数组下标错误"。 我搜索了相同的内容,但之前询问了Q所涉及的对象。这是一个简单的片段。
代码
#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;
}
错误
第8行错误:预期&#39 ;;&#39;在&#39; a&#39;
第13行错误:类型无效&#39; int [int]&#39;对于数组下标
答案 0 :(得分:3)
首先,你有这个无关的a
:
a = new int a[10][10];
^^^
你的意思是写new int[10][10]
。
其次,固定表达式没有类型int*
。它的类型为int(*)[10]
。您无法将其分配给int*
,您必须两次执行此操作:
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<std::vector<int>> a;
它可以为您节省很多其他问题。或者(正如ildjarn指出的那样)std::array<std::array<int, 10>, 10>
,如果这些维度保持不变。
答案 1 :(得分:2)
你有一个错字:
a = new int a[10][10]; //Line 8
^ ~~~~ !
删除此
你分配数组的方式也是错误的,应该是:
int **a;
a = new int *[10]; //Line 8
for(int i = 0; i < 10; ++i)
a[i] = new int[10];