【发布时间】:2016-03-02 22:01:09
【问题描述】:
我在ISO C99 committee draft 中看到,结构可以有一个不完整的数组,其末端未指定大小,称为灵活数组成员。
另一方面,C99 也有可变长度数组,它允许在编译时声明大小不恒定的数组。
我认为 FAM 是一种特殊的 VLA,但我看到两个 SO 用户声称并非如此。此外,阅读Wikipedia section on sizeof,它说sizeof 对这两者的行为不同。
为什么它们都存在而不是只有一个? (他们的用例是不是太不同了?)
另外,还有哪些其他相关行为对于它们每个是不同的?
【问题讨论】:
-
维基百科关于
sizeof是正确的。 VLA 的大小是运行时计算的值——与所有其他出现的sizeof不同。包含 FAM 的结构的大小在编译时是固定的,不包括 FAM 的大小。
标签: c c99 variable-length-array flexible-array-member