标签: c arrays c99 c89 variable-length-array
我理解在VS中,所有变量必须在块的顶部声明,但如果我想要一个VLA,即。如果我想做这样的事情:
int result = runalgorithm(); int vla[result];
上面的代码无效,因为vla必须在顶部声明。除了创建一个任意大的数组之外,有什么好的解决方案呢?
vla
答案 0 :(得分:1)
你做不到。 C99及更高标准支持VLA。 (在C99中必须支持;在C11中它是可选的。)C89没有VLA概念或支持。
C99
C89
您可以选择动态内存分配。看看malloc()和家人,供您参考。
malloc()
请记住,如果你想使用动态内存(分配),一旦你完成使用它,你必须free()分配的内存。
free()
答案 1 :(得分:0)
MSVC不支持VLA。最新版本的MSVC支持与C编译语句混合的声明(我认为这是从VS 2013开始的)。