加入CSDN是出于记录,希望有不足之处多加指正。
1、联合体
从外形上看联合体与结构体非常类似,但是本质上有一个很大的区别,结构体中的每一个成员都有自己独立的内存空间,而联合体则是内存成员公用同一个内存空间。
联合体的各个成员的关系类似于叠堆的效果:
- 联合体的整体尺寸大小应该以成员中最大的为准。
- 给联合体某个成员赋值的时候,会覆盖其他成员的值。
- 联合体成员之间的值是互斥的,有某一时刻只有一个成员是有效的。
定义:
union //联合体标签
{
成员1;
成员2;
......
}
语法:
union: 表示联合体。
联合体标签:用来区分不同的联合体。
成员:联合体内部的所有数据,可以是任何的类型。
// 联合体的声明
union node
{
int i;
char c;
double d;
float f;
};
main()
{
union node n;
printf("n::%d\n" , sizeof(n));
}
赋值于引用:
联合体的操作与结构体的所有操作几乎一致,唯一不同的是存储的策略,不管如何花式赋值只有之后一个操作