c++ - 在 c++/c 中用变量定义数组的长度

标签 c++ c arrays

我正在读一本书说在 C++ 中你不能这样做:

int array_size = 3;
int array[array_size];

然后我用 gcc 尝试了它,但它根本没有提示(异常警告未使用的 array)。

我还读到了 this question .第 4 个答案说你可以使用这样的东西:让我感到困惑。谁能帮忙解释一下?

谢谢,G

最佳答案

如果您使用的是 C++ 编译器,它可以工作,因为大多数 C++ 编译器都提供支持 Variable Length arguments(VLA) 的编译器扩展。

如果您使用的是 C 编译器,它可以工作,因为标准允许它。


在 C++ 中,C++ 标准不允许使用 VLA,因此通过编译器扩展使用它会使您的代码不可移植。
C++ 提供 std::vector std::array(C++11),它们分别满足使用可变长度数组或 c 风格数组的所有要求,您应该使用它们。

请注意,由于 C99 标准,VLA 在 C 中是允许的。

关于c++ - 在 c++/c 中用变量定义数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866614/

相关文章:

c++ - 为什么 lambda 捕获的这个指针被破坏而其他变量没有

c - 通过 MPI_Send 发送一个 int 数组

javascript - 如何轻松地在数组中添加 ".",我可以使用切片吗?

c - 反转数组的函数 - C

Javascript 将数据总数放入列表中

c++ - 通过引用传递 std::string 数组

python - 如何在用户不断输入之前运行程序?

c++ - 使用 std::cout 评估参数的顺序

c++ - 如何在 c 中返回一个 float 数组并将其保存为一个 float 数组以备后用?

c - 使用 cl.exe 编译 sqlite 示例代码时出现链接器 2019 错误