用c ++创建动态内存

use*_*910 1 c++ visual-c++

我正在尝试创建一个动态内存.数组的大小由用户输入决定.我收到以下错误, "expression must have a constant value".

好像我做错了什么.请帮我!我怎样才能让这种动态变化?

这是我到目前为止:

int* IntPtr = NULL;
int main(){

 int arraySize;
 cout << "How many numbers will be on the list? ";
 cin >> arraySize;

 IntPtr = new int[arraySize];

Contact list[arraySize]; // <-- expression must be constant

//more code

delete [] IntPtr;
Run Code Online (Sandbox Code Playgroud)

Mys*_*ial 5

您正在尝试使用可变长度数组.不幸的是,C++不允许它们.(虽然有些编译允许它们扩展)

您需要的是使用动态分配数组new.(并稍后手动解除分配delete)

你已经正确地做了这个:

IntPtr = new int[arraySize];
Run Code Online (Sandbox Code Playgroud)

现在你可以对list变量做同样的事情:

Contact *list = new Contact[arraySize];
delete [] list;
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用vector类,这通常比动态数组更受欢迎.

vector<Contact> list(arraySize);
Run Code Online (Sandbox Code Playgroud)