2
int num = atoi(argv[1]);
unsigned long times[num];  

我有这段代码,我认为它不会编译,因为我试图使用命令行参数中的值分配数组,编译器在编译时不知道该值。但我编译了这段代码,它工作了。有人可以解释这里发生了什么吗?我误解了静态分配的基本概念吗?

4

1 回答 1

5

C99 允许使用 var 分配数组。这称为可变长度数组,即VLA

我手上没有C99,C99的部分是6.7.5.2,以下链接来自网络。

vla - 维基百科

c99 - 维基百科

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

于 2012-09-05T05:39:45.650 回答