我想做这样的事情:
int a = 10;
int array[a];
(这是正确/良好的做法吗?)
但是当我这样做并用以下方法测试时:
printf("%d", sizeof(array));
我得到一个长度为40的数组。这有意义吗?
答案 0 :(得分:4)
您的代码是合法的C99。
然而,编译器对该功能的支持(简称为可变长度数组或VLA)有点不稳定。例如,Microsoft Visual Studio不实现它。此外,C11使VLA成为标准的可选部分,因此该代码将不尽可能便携。
无论如何,你的编译器似乎支持它,是的,如果你的40
大小是 32位,那么int
的大小是有意义的,这很常见,因为{ {1}}