
1.联合的定义格式
union <联合类型名>{<成员表>};
例如:union ABC {int a; double b; char* c;};
联合类型的变量定义
union ABC x, *y=&x;
union ABC {int a; double b; char* c;} a[10];
2.联合类型的长度
等于其所有成员类型长度的最大长度,每个联合对象在内存中所占有的存储字节数等于该联合类型的长度。如联合类型ABC的长度为8,而不是16。
3.联合对象中成员的访问方法
点运算符(.):对象.成员;箭头运算符(->):指针对象:成员
union ABC{int a;double b; char*c;};
union ABC x, *y=&x;
x.a=20; x.b=3.14; y->b+=5; //y->b等价于(*y).b和x.b
4.联合对象的存储特性
存储特性:在任何时候一个联合对象只能存储一个数据成员的值,始终只有一个数据成员为有效,其余数据成员无效。
union ABC x; x.a=25; x.b=38.6;
5.匿名联合
省略联合类型名的联合定义,通常作为结构类型中的一个成员使用。
union ABC x; x.a=25; x.b=38.6;
struct staff {
char name[20];
union {int nb; double da;}; // nb或da有效
struct staff *next;
} x,*px=&x;
x对象中的3成员:name、nb、next或者:name、da、next
x.name与px->name; x.nb与px->nb; x.da与px->da相同
6.联合对象的初始化
只能对第一个数据成员进行初始化,不能对其他成员进行初始化。
union ABC {int a; double b; char* c;} x={5};
联合的应用
教材中有这方面的详细例子,请同学们看书,这里就不做介绍了。