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

Taking value of Array size from user

本文关键字:数组 用户 那里 获取      更新时间:2023-10-16

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

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

编译器给出一个数组,说明数组大小必须是一个常量。我尝试动态给出数组大小,但这会产生相同的错误。它允许变量作为数组大小的唯一方法是,当变量成为常量时。 你能告诉我从用户那里获取数组大小然后声明该大小的数组的方法是什么? 另外,如果你通过动态内存分配来做到这一点,请在每一步解释你的代码。

可变大小的数组不是标准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。它的大小是Arraysize.

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

delete [] input_Arr;

这将删除一个名为input_Arr的数组。

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

{
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
}