首页 > 解决方案 > c++ 用户输入的奇怪数组

问题描述

正如我在 c++ 中所知道的,如果你想创建一个数组,你必须为其大小提供常量值。但在这儿:

int main(){

    int a;
    cin >> a;
    int b[a] = {};

    for (int i = 0; i<a ; i++){
        b[i] = a;
        cout << b[i];
    }
    return 0;
}

如果我输入 5

输出:

55555

它以我无法在 dev c++ 中理解的方式正常工作。如果我在 Visual Studio 2017 中运行它,它会出错。谁能解释为什么?

标签: c++arraysdev-c++

解决方案


您是否有机会使用 GCC?这是一个 GCC 扩展,默认启用。事实上,这是一个非常危险的问题,因为它很容易在您的程序上造成堆栈溢出。它与使用alloca().

为了禁用它,您应该使用名为-Wpedantic. 这将使您的编译器发出警告。(见这个演示

ISO C++ 禁止变长数组 'b' [-Werror=vla]


推荐阅读