union 与struct 区别简介
2012-01-05 16:37
429 查看
union 叫做联合体,而struct叫做结构体。从名称上来讲,无论是union还是struct,它们就像一个房子一样,都是把一些人(变量之类)聚集在一起,方便整体操作。
房子里有人,总得有地方住吧,这时候就显现出两个房子的区别来了,struct像是大地主家的房子,无论人多少,都给配置了相应的床位。而,union则像是贫穷老百姓家,只有一张单人床,你要想睡就必须把已经在上面的那个人给赶下来。
呵呵,打了个比喻,或许你看完下面的说明会更明白。
union U
{
char c;
int i;
double d;
};
struct S
{
char c;
int i;
double d;
};
对于 U来说,它的大小是由内部最大的double类型决定的,sizeof U = 8;也就是说这张床大小就是8 ,只有一张床。
如果,我们让里面的char c 占用了这张床, U.c = 'a';,那么输出cout<< U.c <<endl; 可以得到 a。
然后,再让 int i 占用的话,U.i = 111; 那么输出cout<< U.i<<endl; 可以得到 111;但这时候再输出 c的话, cout<< U.c <<endl;已经得不到 a了,因为只有一张床,i上来之后就把c赶走了,也就是内存里重新写入的 i把之前的a覆盖掉了。
而 struct则不会这样。
因为每个变量都有自己的一张专用床,也就是内存不同。这就是两者最基本简略的不同点。
房子里有人,总得有地方住吧,这时候就显现出两个房子的区别来了,struct像是大地主家的房子,无论人多少,都给配置了相应的床位。而,union则像是贫穷老百姓家,只有一张单人床,你要想睡就必须把已经在上面的那个人给赶下来。
呵呵,打了个比喻,或许你看完下面的说明会更明白。
union U
{
char c;
int i;
double d;
};
struct S
{
char c;
int i;
double d;
};
对于 U来说,它的大小是由内部最大的double类型决定的,sizeof U = 8;也就是说这张床大小就是8 ,只有一张床。
如果,我们让里面的char c 占用了这张床, U.c = 'a';,那么输出cout<< U.c <<endl; 可以得到 a。
然后,再让 int i 占用的话,U.i = 111; 那么输出cout<< U.i<<endl; 可以得到 111;但这时候再输出 c的话, cout<< U.c <<endl;已经得不到 a了,因为只有一张床,i上来之后就把c赶走了,也就是内存里重新写入的 i把之前的a覆盖掉了。
而 struct则不会这样。
因为每个变量都有自己的一张专用床,也就是内存不同。这就是两者最基本简略的不同点。
相关文章推荐
- 结构体(struct)、联合体(union)、枚举(enum) 三种结构的区别及各个结构细节的总结
- C++中class、struct、union的区别
- struct和union的区别
- union与struct的区别?
- C++中的共用体(union)结构解析与结构体(struct)共用体(union) 的区别
- struct union enum的区别
- struct 与 union 的区别
- c语言中的结构(struct)和联合(union)简介
- C中的union和struct的区别
- union 和 struct 的区别与联系
- class和struct的区别以及struct和union的区别
- union和struct的区别
- c语言 结构(struct)和联合(union)简介
- C语言多继承时子类与基类指针关系,union与struct区别,volatile修饰符作用
- struct和union的区别
- struct和union结构体和联合体的区别
- struct/union/enum的区别
- 联合体(union)和结构体(struct)的区别
- C语言union关键字,union和struct区别
- union与struct的区别