一、联合体是?
联合体和结构体差不多,但是其最大的区别在于联合体所有的成员共用一块内存空间。所以联合体也叫共用体。联合体通常用于节省内存空间。
那么联合体在内存中是怎么存储的呢?好奇怪鸭!共用一块内存空间不就乱套了嘛,带着疑问往下看
声明
//结构体
struct Struct
{
char c;
int i;
};
//联合体
union Un
{
char c;
int i;
};
计算内存大小
#include<stdio.h>
union Un
{
char c;
int i;
};
int main()
{
union Un u = {
0 };
printf("sizeof(u): %d\n", sizeof(u));
return 0;
}
//sizeof(u): 4
为什么是4?
因为编译器只为最大的成员分配足够空间,其他成员和最大成员共享这一块内存空间。也会存在内存对齐的情况,后面讲。
二、联合体的特点
既然内存共享,那地址怎么区分?
#include<stdio.h>
union Un
{
char c