首页 > c 语言中,在struct和union中使用未命名的字段有什么好处?

c 语言中,在struct和union中使用未命名的字段有什么好处?

今天才发现有这种用法参考此处。
比如定义如下结构体:

struct Object {
    enum ObjectType type;
    union{
      int value;
      struct{
         struct Object *header;
         struct Object *tail;
      };
    };
};  

可以这样访问结构成员:
Object obj;
obj.value = ..;
obj.header = ..;
obj.tail = ...;

想请教下,这样定义匿名的字段有什么好处?


struct Object {
    enum ObjectType type;
    union{
      int value;
      struct{
         struct Object *header;
         struct Object *tail;
      };
    };
};

题主应该是在64位机器下测试的,
enum是用int来表示的,占4字节;
指针都是8字节;
union中的变量共享同一块内存,所以这个联合体的大小应该是结构体的两个指针的大小,8*2 = 16字节。
考虑到内存对齐的因素:
enum之后应该增加4字节补齐到8字节;
因此,加上Object结构体的16字节一共是24字节。

题主的问题是使用匿名的字段有什么好处,我觉得可能在初始化的时候更加方便吧。
参考下这篇文章:
http://blog.csdn.net/npy_lp/article/details/7038214

【热门文章】
【热门文章】