目录
一、共用体类型声明
二、共用体变量的定义
三、共用体变量的初始化
四、共用体变量的引用
一、共用体类型声明
共用体类型是一种多个不同类型数据共享存储空间的构造类型,即共用体变量的所以成员占用同一个存储空间,一般声明格式如下:
union 共用体名{
类型说明符 成员名1;
类型说明符 成员名2;
...
类型说明符 成员名N;
};
例如:
union utype{
short int a;
float b;
char c[3];
};//声明了一个共用体类型utype
说明:1.和结构体相似,共用体类型声明也不分配内存空间,只说明此类型数据的构造情况,要使用此类型数据还需要定义该类型的变量。
2.union是C语言的关键字,用于说明共用体类型。共用体名和成员名是用户自定义的标识符。
3.共用体中的成员可以是简单变量也可以是数组指针结构体和共用体,即共用体类型允许嵌套定义。
二、共用体变量的定义
和结构体一样,共用体变量的定义也有三种形式
1.先声明共用体类型再定义共用体变量
union utype{
short int a;
float b;
char c[3];
};
union utype x;
2.再声明共用体类型的同时定义共用体变量
union utype{
short int a;
float b;
char c[3];
}x;
3.不指定共用体名而直接定义共用体变量
union {
short int a;
float b;
char c[3];
}x;
说明:1.系统为共用体变量中的所有成员分配以同一地址开始的存储空间,使用覆盖技术共享存储单元。
2.共用体变量所占空间大小取决于占存储空间最大的那个成员,而不是所有成员的存储空间之和,这点是与结构体变量的本质区别。
三、共用体变量的初始化
共用体变量在定义时只能对第一个成员的值进行初始化。
union utype{
short int a;
float b;
char c[3];
}x={10};//以上定义共用体变量x的同时给x.a赋值10
四、共用体变量的引用
共用体的引用方法与结构体完全相同,不能整体直接引用,只能引用共用体变量中的某个成员。
一般格式:共用体变量名.成员名
例如如下共用体:
union utype{
short int a;
float b;
char c[3];
}x,y;
则下面均是合法的语句:
x.a=100;
x.b=5.5;
x.c[0]='m';
scanf("%f",&x.b);
printf("%d",x.a);
说明:1.共用体的成员变量可参与其所属类型允许的任何操作。
2.两个类型相同的共用体变量可以进行赋值操作。例如:
x.a=100;
y=x;
printf("%d",y.a);
//输出的结构应该为100