c++初始化数组,声明大小为一个整数值

c++ initialize array with declared size as a value of an integer

本文关键字:一个 整数 小为 数组 初始化 声明 c++      更新时间:2023-10-16

我想使用读取到整数变量中的值初始化一个大小为的数组。我似乎不明白为什么它在Dev-C++中有效,而在Turbo C++中无效。以下是帮助明确的代码

int arr_size; //cin max value for lets say number of students or something...
cin >> arr_size;
int array[arr_size]; // declares array with size (assume 10 or 100) with range 0 to 9 or 0-99

编译器在Turbo C++中显示了一个错误(我知道,真的很旧,但我的学校很不幸使用了它)。Dev-C++和代码块没有。

为什么会这样?我知道"正如他们在一些书中定义的那样",数组大小与int值相同是一种糟糕的做法,但在Turbo C++中有解决办法吗?我想知道为什么会发生错误,以及如何解决它。。。非常感谢!

C++标准只允许使用常量表达式来调整数组大小。(然而,一些编译器可能会将其作为非标准语言扩展提供。)

您可以使用std::vector代替:

std::vector<int> array(arr_size);

或者您可以手动动态分配内存:

int *const array = new int[arr_size];
...
delete [] array;  // Remember to delete when you're done

标准c++中不允许使用可变长度数组。你可以在C99上完成。考虑使用C++std::vector作为:

std::vector<int> array(arr_size);

如果必须的话,你可以像数组一样对它进行索引。

解决方法是动态分配此数组,确保完成后删除内存。

int arr_size; //cin max value for lets say number of students or something...
cin >> arr_size; 
int *arr = new int[arr_size];
//use the array as needed
delete [] arr;

您需要变量长度数组(VLA),这在C++中是不允许的。C99中允许。

改为使用std::vector<int>,作为:

int arr_size; 
cin >> arr_size;
std::vector<int> array(arr_size);
相关文章: