我想从用户那里获得n并将其放在数组表达式上,但在visual studio 2017中获取错误(表达式必须具有常量值),我看到其他编译器完美地使用它。 我以为我可以使用新的或指针,但那些也不起作用。 我知道它有相似的主题(我无法理解它们并将它们与我的问题相匹配)但如果有人为我编写正确的代码会很棒。 感谢。
int n;
cout <<"Enter n:" ;
cin >> n;
int a[n]; //recive error for n (expression must have a constant value)
for(int i=0;i<n;i++)
a[i]=rand() % 100;
for(int i=0;i<n;i++)
cout<<setw(5)<< a[i];
答案 0 :(得分:2)
在C ++中,数组必须具有固定大小。您不能拥有一个大小取决于运行时值的普通数组。这就是编译器抱怨n
中int a[n];
不是常数的原因。
您应该使用std::vector
:std::vector<int> a(n);
将创建一个可以容纳n
个元素的向量。其余代码可以保持不变。
答案 1 :(得分:0)
“我以为我可以使用新的或指针,但那些也不起作用。” ......你真的这样做了吗?
第一个解决方案是建议您使用矢量的一些答案。
但是如果你想使用指针和new(这是唯一的方法,因为数组声明在声明时需要一个常量大小),你可以使用以下内容:
int n;
cout <<"Enter n:" ;
cin >> n;
int *a; //recive error for n (expression must have a constant value)
a = new int [n]; // <--- this will allocate the memory to create an array of size n.
for(int i=0;i<n;i++)
a[i]=rand() % 100;
for(int i=0;i<n;i++)
cout<<setw(5)<< a[i];
请记住在新的后使用删除。 (删除[] a);