首页 理论教育联合体的定义与变量引用

联合体的定义与变量引用

【摘要】:联合体(共用体)类型定义的一般形式为:联合体类型的定义确定了参与共用存储区域的成员项以及成员项具有的数据类型。定义联合体变量的形式与定义结构体变量完全相似,只是把关键字struct换成union。union联合体名{成员列表;};union联合体名变量列表;·定义联合体类型的同时定义联合体类型变量。例如:有如下语句序列:union test key;key.a=100;key.b=40000.123;那么,联合体变量key中只有一个值,那就是key.b的值。联合体变量作为函数参数。

联合体(共用体)类型定义的一般形式为:

联合体类型的定义确定了参与共用存储区域的成员项以及成员项具有的数据类型。C语言中还允许结构体、联合体以及数组等构造类型数据相互嵌套。定义联合体变量的形式与定义结构体变量完全相似,只是把关键字struct换成union。也可以将类型定义和变量定义分开,或者直接定义联合体变量,有以下3种形式:

·先定义联合体类型,然后定义联合体变量。

union联合体名

成员列表;

};

union联合体名变量列表;

·定义联合体类型的同时定义联合体类型变量。

union联合体名

成员列表;

}变量列表;

·不定义类型名直接定义联合体类型变量。

union

成员列表;

}变量列表;

例如,有如下所示C程序代码段:

union test

{(www.chuimin.cn)

int a;

double b;

}key;

定义了一个联合体类型union test和一个该联合体类型的变量key。

与结构体类型变量处理类似,联合体变量不能直接进行操作处理,也只能通过操作它的成员达到操作它的目的。引用联合体变量成员的方式与引用结构体变量成员的方式相似,一般形式如下:

联合体类型变量名.成员名;特别值得注意的是:一个联合体类型变量不是同时存放多个成员的值,而只能完整地存放一个成员项的值,这个值就是该联合体变量最后一次赋值后所具有的内容。例如:有如下语句序列:

union test key;

key.a=100;

key.b=40000.123;

那么,联合体变量key中只有一个值,那就是key.b的值。

使用联合体变量时,由于存放入联合体变量中的值只可能是若干个成员值中的一个,所以一般情况下,对联合体变量都不会进行初始化。如果非要对联合体变量初始化,则注意只能对联合体变量的第一个成员分量进行初始化。请比较下面两个程序段:

只有在两个同类型的联合体类型变量之间才可以直接赋值。例如:

union test key,x;

key.a=100;

x=key;

上述操作后,x.a的值为100。

【例10.13】 在人事数据管理中,对“职级”数据项处理方式如下:如类别是工人则登记其“工资级别”;如类别是技术人员则登记其“职称”。

【例10.14】 联合体变量作为函数参数。

【例10.15】 用指向联合体变量的指针作为函数的参数。