我目前正在阅读Lappman的《C++ Primer》。在第113页上,它说:
“数组中的元素数量是数组类型的一部分。因此,维度必须在编译时已知,这意味着维度必须是常量表达式。”
此外,它还指出我们不能做这样的事情:
但这不是真的,我编译它时没有任何问题,我甚至可以做出像这样的东西。
“数组中的元素数量是数组类型的一部分。因此,维度必须在编译时已知,这意味着维度必须是常量表达式。”
此外,它还指出我们不能做这样的事情:
unsigned cnt = 43; //not an const expression
string bad[cnt]; // error
但这不是真的,我编译它时没有任何问题,我甚至可以做出像这样的东西。
int i;
cin >> i;
get_size(i);
void get_size(int size) {
int arr[size];
cout << sizeof (arr);
}
它很好用,那为什么每本书都说数组大小必须在编译时知道?或者它必须是常量表达式?