结构体中只有一个联合类型,怎么理解啊?

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:21:39
比如:struct add{
union {
int a;
char b;
long c;} d
};
直接写联合类型不就完了吗,就是外面别再套个结构体?为什么要这么啰索呢?

1L这个好像不相当于楼主的代码吧
union是共用内存空间的,所占大小为最大的那个类型的大小,楼主这个struct add只会占一个long的空间,而1L这个至少要占sizeof(int)+sizeof(char)+sizeof(long)
(以上估算未考虑空间对齐问题)

struct add{
union {
int a;
char b;
long c;} d
};

相当于
struct add{
tem d;
};

struct tem {
int a;
char b;
long c;
};

调用的时候访问a的做法都是add.d.a。相比于union,我更推荐我写的后者,毕竟代码易懂比节省几行更重要!