#include <iomanip>
#include <iostream>
#include <Windows.h>
using namespace std;
template <class T>
void sort(int n, T a[]){
for(i=0;i<n-1;i++){
for(j=i;j<n;j++){
if(a[i] > a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
void main(){
int size;
cout<<" Please input the amount of numbers you would like to sort"<<endl;
cin>>size;
int Amta[size];
for(int i=0; i<size; i++){
cout<<"Please enter the "<<size+1<< "number";
cin>>Amta[i];
}
Sleep(100000);
}
我正在尝试从用户那里获取用户想要输入的数字并将其存储在可变大小中。
但是,当我初始化时array Amta[size]
,出现以下编译错误:
表达式必须具有恒定值
和
C2057:预期常量表达式”编译错误。
声明数组时,不能在方括号之间输入非常数值:
int Amta[size];
由于您是size
从用户那里得到的,因此编译器无法提前告知需要多少内存Amta
。在这里要做的最简单的事情(尤其是对于练习而言)是选择一个相对较大的值并使该常量分配不变,例如:
int Amta[1024];
然后,如果您要小心(应该),则可以检查if (size > 1024)
并打印错误,前提是用户想要的大小超出了预先分配的范围。
如果想花哨的话,可以Amta
使用没有预设大小的定义,例如int *Amta;
,然后再使用分配malloc
:
Amta = (int *)malloc(sizeof(int) * size);
然后Amta
,完成后,您还必须稍后释放它:
free(Amta);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句