联合体的定义
联合体的定义和结构体相同。
联合体成员共用存储空间,联合体占用的空间=最大长度的数据成员的长度。
c
union State
{
char sleep;
char run;
int suspend;
double error;
}state_u;
以上例子,State表示联合体的名字,它相当于声明了一个联合体的模板,以后可以使用union+联合体名来声明一个联合体变量。state_u表示在创建联合体模板(State)的同时定义了一个联合体变量state_u。
例如:
c
union State s1,s2; //声明两个联合体变量s1和s2
此外还可以使用typedef重新定义联合体模板(类型)
c
//将联合体模板union data重新命名为stu_data,以后使用stu_data就可以直接定义联合体类型的变量。
typedef union data
{
char* name;
char age;
}stu_data;
//使用新名字stu_data创建两个变量stu_info1和stu_info2
stu_data stu_info1,stu_info2;
初始化联合体
方式1:
c
stu_data a;
a.name = "xiao";
stu_data b=a; //把一个联合初始化为另一个同类型的联合
方式2
c
stu_data c={"ming"}; //直接赋值,会把第一个成员赋值给联合体,也就是说c表示 char* name
方式3
c
stu_data d={.age=23}; // 使用初始化器