共用体是将不同的数据类型组合在一起,这些不同类型的成员在内存中占用的起始单元是相同的。所有成员共享一段内存空间,其变量长度为成员中最长的长度。这和结构体有本质区别,结构体的每个变量都有自己的内存空间,变量长度为各个变量长度之和。
1.共用体类型的定义
union 共用体名{
类型成员1;
类型成员2;
...
类型成员n;
};
2.共用体变量的定义(3种方式)
union 共用体名{
类型成员1;
类型成员2;
...
类型成员n;
};
union 共用体名 共用体变量名;
union 共用体名{
类型成员1;
类型成员2;
...
类型成员n;
}共用体变量名;
union{
类型成员1;
类型成员2;
...
类型成员n;
}共用体变量名;
3.共用体变量的赋值和引用
赋值和引用只能对成员进行
共用体变量名.成员名;//赋值及引用方式
Struct与Union主要有以下区别:(摘自网络资料)
1. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。
2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。