如何在其他代码之后在Visual Studio C89中声明一个可变长度数组

时间:2015-06-09 14:47:19

标签: c arrays c99 c89 variable-length-array

我理解在VS中,所有变量必须在块的顶部声明,但如果我想要一个VLA,即。如果我想做这样的事情:

int result = runalgorithm(); 

int vla[result];

上面的代码无效,因为vla必须在顶部声明。除了创建一个任意大的数组之外,有什么好的解决方案呢?

2 个答案:

答案 0 :(得分:1)

你做不到。 C99及更高标准支持VLA。 (在C99中必须支持;在C11中它是可选的。)C89没有VLA概念或支持。

您可以选择动态内存分配。看看malloc()和家人,供您参考。

请记住,如果你想使用动态内存(分配),一旦你完成使用它,你必须free()分配的内存。

答案 1 :(得分:0)

MSVC不支持VLA。最新版本的MSVC支持与C编译语句混合的声明(我认为这是从VS 2013开始的)。