一.定义
联合体与结构体极其相似,只不过联合体的所有成员是共用同一块内存的。
二.联合体大小的计算
联合体共用内存的大小为联合体成员大小的最大值来定
#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;
}