c struct size with void * value 成员

扇子

我在 C 中有一个这样的结构:

struct ll {
    struct ll * next; 
    void *value [];
}

当我打印struct llas的大小时printf("sizeof ll:%d\n", sizeof(struct ll));,为什么结果是 8?

在此处输入图片说明

是什么意思void *value[]

灌木丛

value字段是一个灵活的数组成员它被定义为一个未指定大小的数组,void *作为结构的最后一个成员。

C 允许这样做,以便您可以为结构分配空间以及数组的元素数量。因此,结构的大小包括灵活的数组成员。这就是为什么结构体的大小是 8 的原因,因为它只包含next成员。

假设您希望此结构的实例value包含 10 个元素。然后,您将按如下方式分配它:

struct ll *inst = malloc(sizeof(struct ll) + (sizeof(void *) * 10));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问对象的成员void指针C ++

来自分类Dev

清除struct,它是C ++中的类的成员

来自分类Dev

C ++将struct成员作为参数传递

来自分类Dev

Struct和Classs成员结构C ++

来自分类Dev

C-帮助打印返回的Struct的成员

来自分类Dev

传递struct成员以在c中起作用

来自分类Dev

C ++ malloc从'void *'到struct的无效转换

来自分类Dev

将struct数组初始化为c ++类成员

来自分类Dev

引用可能指向C ++中的struct成员

来自分类Dev

C ++中具有相同名称但成员不同的struct

来自分类Dev

使用fstream C ++编辑初始化的struct成员

来自分类Dev

在C ++中按struct成员对列表进行排序

来自分类Dev

C: struct 声明中是否允许成员之间的操作?

来自分类Dev

如何在C#中将void指针转换为struct

来自分类Dev

似乎无法在C ++中将void *转换为struct

来自分类Dev

似乎无法在C ++中将void *转换为struct

来自分类Dev

Vulkan与struct成员对齐

来自分类Dev

c-*(void **)&(int [2]){0,PAGE_SIZE}; 含义?

来自分类Dev

通过 void * 访问结构的成员

来自分类Dev

struct和struct成员的数组元素

来自分类Dev

在c中具有结构的void *成员是什么意思?

来自分类Dev

状态错误 C2535 dflt_ctor_closure(void)':成员函数已经定义或声明

来自分类Dev

向量struct的打印成员

来自分类Dev

发起类作为struct的成员

来自分类Dev

向量struct的打印成员

来自分类Dev

struct 的索引矩阵元素成员

来自分类Dev

如果C ++的struct成员函数定义是在struct主体之外定义的,则它们会有所不同?

来自分类Dev

python ctypes struct的c_int成员仅仅是ints吗?

来自分类Dev

如何在C#中为struct成员赋予XML序列化默认值

Related 相关文章

热门标签

归档