表达式必须有一个常数值
我在线上收到此错误int mas[n]
。为什么会发生错误?
int main()
{
int n;
cout << "Enter the number of elements: "; cin >> n;
int mas[n];
srand(time(NULL));
for (int i = 0; i < n; i++)
{
mas[i] = rand()%100-1;
cout << " " << mas[i] << "\t";
}
cout << endl;
system("pause");
return 0;
}
这就是所谓的VLA或“可变长度数组”,它是 C++ 标准中不允许的结构(与可以使用它的 C 语言不同)。如果数组的大小在编译时未知,则数组是VLA 。如果
n
它是一个常量,您可以创建数组:发生的情况是,由于它不是标准的一部分,它将取决于编译器是否支持此功能。在某些编译器上,代码会编译,而在其他编译器上则不会。
为避免此问题,您可以使用动态内存:
或者 STL 的容器: