C++ 错误:无效类型';int[int]';对于数组中的数组下标
这是我的代码,我做错了什么C++ 错误:无效类型';int[int]';对于数组中的数组下标,c++,arrays,C++,Arrays,这是我的代码,我做错了什么 #包括 使用名称空间std; int main() { int n; cin>>n; int a[n]; 对于(inti=0;i>a[i]; 对于(int i=0;i>n; int a[n]; 这是在创建一个可变长度数组,这是,但某些编译器允许它作为非标准扩展。这本身不是一个错误,但需要避免。当需要动态分配数组时,请使用std::vector 也就是说,您的错误在这里: if(a[i]>j[i])cout如果初始化数组,int数组的下标必须是常量。 如果要使用动态数
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;
int a[n];
对于(inti=0;i>a[i];
对于(int i=0;i 如果(a[i]>j[i])不能我相信你的问题在main的第3行:
inta[n];
要在c中动态分配数组,您可能需要看一下这篇文章:
intn;
cin>>n;
int a[n];
这是在创建一个可变长度数组,这是,但某些编译器允许它作为非标准扩展。这本身不是一个错误,但需要避免。当需要动态分配数组时,请使用std::vector
也就是说,您的错误在这里:
if(a[i]>j[i])cout如果初始化数组,int数组的下标必须是常量。
如果要使用动态数组,可以使用int指针,如下所示:
int n;
//Make some changes...
int *buffer=new int[n];
HMM<代码> int a[n];看起来无效,C++。你将代码< > [i] < /C> >到 j[i] 。后者是一个键入,你的意思是“代码> A[j] < /Cord>。这是语义错误(C++中,可能不是编译器)但这不是问题所在。std::vector
会更好。operator new
很容易教,但指针很难使用。
int n;
//Make some changes...
int *buffer=new int[n];