c++ - 数组的非常量声明

标签 c++ arrays gcc variable-length-array

几年来我一直在自学编程,我确信如果您需要对变量号进行数组声明,则需要使用 mallocnew

今天我发现它在 g++ 4.4.4 版本下编译,没有警告或错误:

#include <iostream>
using namespace std;

int main()
{
    int size_array;
    cin >> size_array;
    int iTable[size_array];

    for(int i=0;i < size_array;i++)
        iTable[i]=i*i;
    for(int i=0;i < size_array;i++)
        cout << iTable[i] << endl;

    return 0;
}

如果您使用的是 gcc(在将 coutcin 更改为 printfscanf 之后,它也可以完全编译>)

在 Visual Studio 下,此代码无法编译,因为 size_array 不是常量。

这是什么时候改的?这是一种安全的方法吗?

最佳答案

这是一个 C99 功能 - VLA - 这不是标准 c++ 的一部分。如果您的编译器支持它并且您不需要可移植性,则可以使用它。如果编译器支持它,那么使用它是绝对安全的 - 但使用非标准功能是一个坏习惯。

关于c++ - 数组的非常量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377411/

相关文章:

c++ - Algorithm文件解决方案中的错误c2784、c2780和c2676?

c++ - 错误运算符 new[] : function does not take 1 arguments

c++ - Boost::graph (c++) 优于 networkx (python)

C++ 字符串和字符串字面量比较

php - 查找表中存储的 1 组坐标的 2 个坐标之间的最短距离

gcc - 在 gcc 中禁用除少数警告之外的所有警告

c - 了解 GCC 内联汇编函数

c - 向 gcc 添加通行证?

javascript - 使用 forEach 连接数组

c - 如何在C中填充一个char数组