共用体类型的定义、变量定义和使用
union和struct很相似
#include<stdio.h>
struct mystruct
{
int a;
char b;
};
typedef union myunion
{
int a;
char b;
}GGG;
int main(void)
{
//test 1
struct mystruct s1;
s1.a=23;
printf("s1.b = %d\n",s1.b); // 0 无关的
union myunion u1; //
s1.a = 23;
printf("u1.b = %d\n",u1.b); //23 u1.a和1u1.b是相关的
printf("%d\n",sizeof(GGG)); //4
printf("%d\n",sizeof(union myunion)); //4
return 0;
}
union的sizeof测到的大小实际是union中各个元素里面占用内存最大的那个元素的大小,因为可以存下这个,就一定能存下其他元素
union中的元素不存在内存对齐问题,因为union中实际只有一个内存空间,都是从同一个地址开始的(union占用内存空间的首地址)
共用体union和结构体struct的区别
相同点是操作语法相同
不同是本质不同,struct是多个独立元素(独立内存空间)大包在一起;union是一个元素(一个内存空间)的多种不同解析方式
共用体的主要用途
union对同一个内存单元进行多种不同规则解析