下午好诶,今天小眼神给大家带来一篇C语言联合体详解的文章~
目录
联合体
1. 联合体类型的声明
与我们之前学的结构体很相似,联合体也是由一个或者多个成员组成的,并且成员之间的类型可以不同。
联合体与结构体不同的是,联合体的组成成员所占用内存空间是同一块内存空间,并且,编译器只为最大的成员分配足够多的内存空间,所以联合体也叫做:共用体。
若是
给联合体其中一个成员赋值,其他成员的数值也会跟着变化。
#include<stdio.h>
union Un
{
char a;
int i;
};
int main()
{
union Un un = { 0 };
printf("%d\n", sizeof(un));//4
return 0;
}
输出结果: 4
如果是结构体,这里应该输出结果为8,但结构体内成员共用一块空间,只为最大的成员分配足够多的内存空间,所以这里只给 i 分配了4个空间,a存储在 i 的空间中。
2. 联合体的特点
联合体成员共用一个内存空间,那么一定要保证最大的成员要装下,所以,这样的联合变量的大小,至少是最大成员的大小(因为联合体至少有能力保存最大的那个成员)