一.定义
联合体与结构体极其相似,只不过联合体的所有成员是共用同一块内存的。
二.联合体大小的计算
联合体共用内存的大小为联合体成员大小的最大值来定
#include<stdio.h>
union Un
{
int a;
char c;
};
int main()
{
union Un u;
printf("%zu",sizeof(u));
return 0;
}
三.联合体的所有成员是共用同一块内存的
#include<stdio.h>
union Un
{
int a;
char c;
};
int main()
{
union Un u;
printf("%p \n", &u);
printf("%p \n", &(u.a));
printf("%p ", &(u.c));
return 0;
}
四.联合体共用内存会发生数据覆盖,所以调用联合体成员只能选择调用其中一个
#include<stdio.h>
union Un
{
int a;
char c;
};
int main()
{
union Un u;
u.a = 0x12345678;
u.c = 0x00;
return 0;
}
五.利用联合体判断大小端存储
#include<stdio.h>
union Un
{
int a;
char c;
};
int DXD(union Un u)
{
return u.c;
}
int main()
{
union Un u;
u.a = 0x00000001;
int g=DXD(u);
if (g == 1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}
六.联合体大小的计算
#include<stdio.h>
union Un
{
char arr[5];
int c;
};
int main()
{
union Un u;
printf("%zu",sizeof(u));
return 0;
}