#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);
}
Run Code Online (Sandbox Code Playgroud)
我试图获取用户想要从用户输入的数量并将其存储在可变大小中.
但是当我初始化时,array Amta[size]我得到以下编译错误:
表达式必须具有恒定值
和
C2057:预期的常量表达式"编译错误.
Aar*_*den 13
声明数组时,不能在括号之间输入非常量值:
int Amta[size];
Run Code Online (Sandbox Code Playgroud)
由于您是size从用户那里获得的,因此编译器无法提前告知需要多少内存Amta.这里最简单的事情(特别是练习)只是选择一个相对较大的值并使其成为常量分配,如:
int Amta[1024];
Run Code Online (Sandbox Code Playgroud)
然后,如果您想要小心(并且您应该)if (size > 1024),如果用户想要的大小超出预先分配的范围,您可以检查并打印错误.
如果你想得到想象,你可以定义Amta没有预先设定的大小,int *Amta;然后你稍后用malloc以下方式分配它:
Amta = (int *)malloc(sizeof(int) * size);
Run Code Online (Sandbox Code Playgroud)
那么Amta当你完成它之后你还必须免费:
free(Amta);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28461 次 |
| 最近记录: |