该value
字段是一个灵活的数组成员。它被定义为一个未指定大小的数组,void *
作为结构的最后一个成员。
C 允许这样做,以便您可以为结构分配空间以及数组的元素数量。因此,结构的大小不包括灵活的数组成员。这就是为什么结构体的大小是 8 的原因,因为它只包含next
成员。
假设您希望此结构的实例value
包含 10 个元素。然后,您将按如下方式分配它:
struct ll *inst = malloc(sizeof(struct ll) + (sizeof(void *) * 10));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句