错误:数组中数组下标'int[int]'的类型无效



这是我的代码,我做错了什么?

#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = 0; i < n-1; i++)
{
for(int j = 1; j < n; j++)
{
if (a[i] > j[i]) cout << a[i] << " ";
}
}
return 0;
}

我得到一个错误:

错误:数组下标的类型无效

int n;
cin >> n;
int a[n];

这是在创建一个可变长度数组,它不是标准C++,但一些编译器允许它作为非标准扩展。这本身并不是一个错误,但却是需要避免的。当需要动态分配的数组时,请改用std::vector

也就是说,你的错误就在这里:

if (a[i] > j[i]) cout << a[i] << " ";

jint,您无法对其进行索引。您需要使用a[j]而不是j[i]:

if (a[i] > a[j]) cout << a[i] << " ";

如果初始化数组,int数组的下标必须是一个常量。如果你想使用一个动态数组,你可以像这样使用int指针:

int n;
//Make some changes...
int *buffer=new int[n];

我相信您的问题在main的第3行:int a[n];对于在c中动态分配数组,您可能想看看这篇文章:如何在c++中动态分配阵列

最新更新