数组静态分配

cod*_*ons 2 c arrays

int num = atoi(argv[1]);
unsigned long times[num];  
Run Code Online (Sandbox Code Playgroud)

我有这个代码,我认为它不会编译,因为我试图使用命令行参数中的值来分配数组,编译器在编译时不知道.但是我编译了这段代码并且它有效.谁能解释一下这里发生了什么?我误解了静态分配的基本概念吗?

she*_*ngy 5

C99允许使用var分配数组.这称为可变长度阵列又称VLA

我手里没有C99,C99中的部分是6.7.5.2,以下链接来自互联网.

vla - 维基百科

c99 - 维基百科

请注意,c ++不支持vla,此处提供更多信息