结构体中只有一个联合类型,怎么理解啊?
来源:百度知道 编辑:UC知道 时间:2024/06/07 12:21:39
比如:struct add{
union {
int a;
char b;
long c;} d
};
直接写联合类型不就完了吗,就是外面别再套个结构体?为什么要这么啰索呢?
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,我更推荐我写的后者,毕竟代码易懂比节省几行更重要!