如何使用C定义带变量的数组?

时间:2015-03-13 02:27:41

标签: c arrays

我想做这样的事情:

int a = 10;
int array[a];

(这是正确/良好的做法吗?)


但是当我这样做并用以下方法测试时:

printf("%d", sizeof(array));

我得到一个长度为40的数组。这有意义吗?

1 个答案:

答案 0 :(得分:4)

您的代码是合法的C99。

然而,编译器对该功能的支持(简称为可变长度数组或VLA)有点不稳定。例如,Microsoft Visual Studio不实现它。此外,C11使VLA成为标准的可选部分,因此该代码将不尽可能便携。

无论如何,你的编译器似乎支持它,是的,如果你的40大小是 32位,那么int的大小是有意义的,这很常见,因为{ {1}}