以下代码崩溃:
int main()
{
int n, arr[n];
cin>>n;
}
以下代码可以正常使用
int main()
{
int n;
cin>>n;
int arr[n];
}
答案 0 :(得分:12)
在第一种情况下,arr[n];
正在阅读未初始化 n
,其行为未定义
请注意,在C ++中,可变长度数组无论如何都是编译器扩展。
使用std::vector
(或std::array
,如果您有充分理由(可能不这样做),请使用便携式C ++。
答案 1 :(得分:2)
您正在创建一个数组而不给出数组大小。
int n, arr[n];
此处,n
未初始化。