共用体与结构体
注意:此贴仅用于理解共用体。
源代码:
#include <stdio.h>
void main()
{
union eg1//8
{
int c;//4
int d;//4
struct//8
{
int a;
int b;
} out;
} e;
e.c = 1;
e.d = 2;
e.out.a = e.c * e.d;//2*2==4,e.c==e.d==e.out.a==4
e.out.b = e.c + e.d;//4+4==8
printf("%d,%d\n", e.out.a, e.out.b);
}
/*
e的大小为最长元素的大小,也就是结构体out的大小,共两个int,假设此处int为4字节
e.c和e.d和e.out.a占用同一块内存,即低4字节的内存,a.out.b占用高4字节内存
然后e.c=1;e.d=2;
e.c和e.d和e.out.a都为2
e.out.a=e.c*e.d = 2*2 = 4;
那么e.c和e.d和e.out.a都变成了4
e.out.b=e.c+e.d = 4+4 = 8
*/