根据我的C++教材,以下表达式:
cout << "Enter number of students\n";
cin >> number;
int score [number];
这是一个非法的表达式。我不能使用变量作为数组大小。
为什么我不能这样做?(我不是在寻找替代方案,我还没有涉及指针、向量等,但我想了解这种行为。)
变长数组在C++中是不被支持的,因为它们在ISO C90/ANSI C89标准中并未被包含。虽然C99引入了变长数组,但这与C++的设计有所偏差,在C++中使用STL容器类可以提供更灵活的多对象存储方式,因此变长数组在C++中被认为是不必要的。
std::vector<int> number;
。 - M.M
int score[number];
是合法的。它属于变长数组。 - chux - Reinstate Monicaint score[number];
需要number * sizeof(int)
字节。因此,通常在堆栈上 - 编译器很容易生成在运行时分配此空间的代码。 - chux - Reinstate Monica