以特定方式在c ++中动态初始化2d数组

时间:2017-06-05 12:11:31

标签: c++ arrays c++14 dynamic-memory-allocation variable-length-array

如果我们在c ++中初始化一个二维数组,如:

    int n; 
    cin>>n;
    int a[n][1000]= {0};

为什么编译但不能正常工作?我试图访问[4] [2],它给了我2,而它应该给我0,而在以下情况下:

    int n;
    cin>>n; int a[n]= {0};

它的工作非常好。使用gcc c ++ 14编译器

1 个答案:

答案 0 :(得分:0)

  

为什么要编译

该计划格式不正确。但是,某些编译器支持将可变长度数组作为语言扩展,因此将允许您显示的两个示例程序。

  

为什么......但不能正常工作?

我怀疑你期望程序的行为与它的表现不同。 为什么它的行为会有所不同取决于您的预期。或者您可能尝试创建一个比堆叠更大的数组。