全站搜索未启用
跳到主要内容

视频五:联合定义与使用 视频

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};

联合的应用

教材中有这方面的详细例子,请同学们看书,这里就不做介绍了。