我正在读一本书说在 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/