为什么不能在C ++中使用变量作为数组大小?

时间:2014-09-29 03:02:25

标签: c++ arrays

根据我的C ++教科书,以下表达式:

cout << "Enter number of students\n";
cin >> number;
int score [number];

ILLEGAL 表达式。 我不能使用变量作为数组大小。

为什么我不能这样做? (我不是在寻找替代方案,我没有进入指针,向量等,但我想了解这种行为。)

2 个答案:

答案 0 :(得分:4)

ISO C90 / ANSI C89不支持可变长度数组,从中可以得到C ++。虽然在C99中添加了与C ++不同的VLA,但在C ++中它们可能是不必要的,它们具有STL容器类,以提供更灵活的存储多个对象的方法。

答案 1 :(得分:0)

在C ++中,编译器必须知道在编译时为数组分配的内存量。但是,直到运行时才知道变量的值。这就是为什么不允许您使用变量作为数组的大小。

如果您需要为类项目使用数组,我建议使用const来定义您允许的最大大小。稍后,您将学习如何使用其他技术,如指针和STL容器(例如std :: vector)。