C语言之共用体(联合体)

时间:2022-09-05 17:50:07
#include<stdio.h>

struct data1{

int a;//偏移0

char b;//偏移量:某个成员的实际地址相对于结构体首地址的距离 偏移为4 为char 的4 倍
int c;//偏移为5,不是4的整数倍 字节对齐 系统填充3个字节 故偏移量为8 加上4 结构体长度为12
//结构体大小:等于结构体最后一个成员的偏移量+最后成员的大小+末尾填充字节数。每个成员相对于结构体的首地址的偏移量都必须当前成员大小的整数倍
};//逗号



union data{
int a;
char b;
int c;

};//让不同类型的变量共享相同的内存地址
int main()
{
union data data_1;
data_1.b='C';
data_1.a=10;
printf("结构体长度为:%lu\n",sizeof(struct data1));//结构体长度为12,而非9
printf("共用体长度:%lu\n",sizeof(union data));//共用体长度为4,最大元素的字节数为4

return 0;
}