文章目录
1.联合体
1.1联合体的声明
和结构体一样,联合体也是由一个或多个成员构成,同样,这些成员也可以是不同的类型。
但是,编译器只会为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以,联合体也叫共用体
#include<stdio.h>
//联合体的声明
union Un
{
char c1;
int i;
char c2;
};
int main()
{
//创建一个union Un类型的临时变量
union Un un = {
0 };
//计算联合体变量的大小
printf("union Un 大小为%zd", sizeof(un));
return 0;
}
为什么是4呢?
我们就来了解联合体的特点吧
1.2联合体的特点
联合的成员是共用同一块内存空间,所以一个联合体变量的大小至少是最大成员的大小(因为联合至少得有能力存放最大的成员)。
#include<stdio.h>
//联合体的声明
union Un
{
char c1;
int i;
};
int main()
{
//创建一个union Un类型的临时变量
union Un un = {
0 };
//查看联合成员的地址
printf("成员i 的地址为 %p\n", &un.i);
printf("成员c1的地址为 %p\n", &un.c1);
printf("联合体un的地址为%p\n", &un.c1);
return 0;
}
可以看到输出的三个地址一模一样。
#include