union的作用是定义共用体,作用是让几个不同类型的变量共用同一个内存地址。
union data{
int a;
char b;
int c;
}//a,b,c可以放在同一个内存单元,这样的好处是可以节约一定的内存开销
//但是在同一时刻只能存储一个成员。
//共用体所占内存长度是共用体中定义的一个占用最大内存单元的变量。
int main()
{
union data data_1;
data_1.b='c';
data_1.a=10;//会覆盖前面的值
return 0;
}
但是对于结构体struct
struct data{
int a;
char b;
int c;
}//a占用4个字节,且偏移量为0,是a大小4字节的整数倍,所以不用填充
//b占用1字节,偏移量为4,是b大小1字节的整数倍,所以不用填充
//c占用4字节,偏移量为5,不是c大小4字节的整数倍,所以需要填充
//使得c的偏移量为8;此时struct占用内存大小为12字节。