联合类型的定义
联合也是一种特殊的自定义类型
这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。
比如:
//联合类型的声明
union Un
{
char c;
int i;
};
int main()
{
//联合变量的定义
union Un un;
//计算连个变量的大小
printf("%d\n", sizeof(un));
printf("%p\n",&un);
printf("%p\n", &(un.c));
printf("%p\n", &(un.i));
return 0;
}
注意:共用体的内存是公用的,同时创建一块内存,那么到底是多少呢?
我们计算得出是:总共是4个字节,同时i和c都是同样的一块空间。
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联
合至少得有能力保存最大的那个成员)。
我们利用联合体也是有用的,很多人并不知道如何使用联合体
假设学的用户系统
用户:
学生(名字,年龄,身份)
老师(名字,年龄,职称)
学生的身份可能是:一年级本科生,也有可能是二年级研究生
老师的职称有可能是:教授,副教授。
这样我们就需要联合体来帮我们节省空间:
union type
{
//身份
//职称
};
struct UserInfo
{
char name[20];
int age;
union type t;
};