为什么代码会崩溃? (在CPP中)

时间:2018-06-18 09:37:18

标签: c++ arrays

以下代码崩溃:

int main()
{
  int n, arr[n];
  cin>>n;      
}

以下代码可以正常使用

int main()
{
  int n;
  cin>>n;
  int arr[n];
}

2 个答案:

答案 0 :(得分:12)

在第一种情况下,arr[n];正在阅读未初始化 n,其行为未定义

请注意,在C ++中,可变长度数组无论如何都是编译器扩展。

使用std::vector(或std::array,如果您有充分理由(可能不这样做),请使用便携式C ++。

答案 1 :(得分:2)

您正在创建一个数组而不给出数组大小。

int n, arr[n];

此处,n未初始化。