特点:
多个变量之间内存存储空间的部分是重合的
//所有成员地址相同
union Un
{
char c;
short s;
int i;
};
int main(void)
{
union Un un;
//所有成员地址相同
printf("%p\n", &un.c);
printf("%p\n", &un.s);
printf("%p\n", &un.i);
}
//修改一个成员,其他成员也会改变
union Un
{
char c;
short s;
int i;
};
int main(void)
{
union Un un;
//所有成员共享内存
//修改一个成员,其他成员也会改变
un.i = 65;
printf("%d\n%d\n%d\n", un.c, un.s, un.i);
}
//计算Union大小
例题1
union Un
{
char c;
short s;
int i;
};
int main(void)
{
union Un un;
//计算Union大小
printf("%d\n", sizeof(un));//4
}
分析结果
例题2
union Un
{
char c[5];
short s;
int i;
};
int main(void)
{
union Un un;
//计算Union大小
printf("%d\n", sizeof(un));//8
}
结果
分析