从用户那里获取数组大小的值

时间:2018-10-06 14:49:37

标签: c++ arrays

我正在为我的大学课程做作业,并且在我的代码中遇到以下麻烦:

cout << "Enter number of values you want to enter" << endl;
int Arraysize;
cin >> Arraysize;

int input_Arr[Arraysize];

编译器给出一个数组,说明数组大小必须为常数。我试图动态地给定一个数组的大小,但这给出了同样的错误。当将变量设为const时,它允许变量作为数组大小的唯一方法是。 您能告诉我从用户那里获取数组大小然后声明该大小的数组的方法吗? 另外,如果您通过动态内存分配来这样做,请在每个步骤中说明您的代码。

2 个答案:

答案 0 :(得分:4)

可变大小的数组不是标准的C ++,因此编译器不满意。

您有两个选择:

1)使用std::vector,它会自动自动增大大小。但是,由于这是硬件,您可能暂时还不能使用它。

2)通过使用newdelete为数组动态分配内存,如下所示:

#include <iostream>
using namespace std;

int main() {
  int Arraysize;
  cin >> Arraysize;

  int *input_Arr = new int[Arraysize];

  // Here you have an array called `input_Arr`, of size `Arraysize`, ready to be used (eg filled).

  // when you are done with using the array, you must free the dynamic memory
  delete [] input_Arr;

  return 0;
}

需要注意的两点是:

int *input_Arr = new int[Arraysize];

它是做什么的?它为名为input_Arr的数组动态分配内存,该数组将存储int s。其大小为Arraysize

每次动态分配内存时,程序必须将其释放。为此,我们使用以下代码:

delete [] input_Arr;

这将删除名为input_Arr的数组。

答案 1 :(得分:0)

如果要在C ++中使用动态分配,请使用关键字新建删除 这种情况的代码将是

{
 int size;
 cin>>size;
 int  *my_array = new int[size]; //dynamic allocation
 ...
 delete [] my_array;  //don't forget to use delete at the end of your code

}