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

时间:2012-03-26 04:30:46

标签: c++ c arrays

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

int array_size = 3;
int array[array_size];

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

我还读到了this question。第四个答案说你可以使用这样的东西:char someCondition[ condition ];对我来说,condition只有在运行时才能知道,所以整个事情似乎真的让我感到困惑。任何人都可以帮忙解释一下吗?

感谢,G

1 个答案:

答案 0 :(得分:7)

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

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


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

请注意,自C99标准以来,C中允许使用VLA。