- 类似于struct结构的写法,但是不同的是struct内部的变量都是独立的,但是union的所有成员共享一个空间
- 同一时间只有一个成员是有成效的
- union的大小是其最大的成员
sizeof(union ...) = sizeof(每个成员的最大值)
- 初始化时对第一个成员初始化
union Anelt {
int i;
int c
} elt1,elt2;
//union内部的i和c是占据同一个空间的
//或者 union Anelt elt1,elt2;
elt1.i = 4;//向地址上填入一个i的值
elt2.c = 'a';//向地址上填入一个c的值
elt2.i = 0xDEADBEEF//再向i中填入值就会抵掉前面c内部的值,但c此时还是有值的
typedef union Anelt {
//此时分配一处空间(跟随int和char中更大的那个)供i和ch同时使用
int i;
char ch[sizeof(int)];
} CHI;
int main(){
CHI chi;
int i;
chi.i = 1234;
for (i=0; i<sizeof(int); i++){
printf("%02hhX\n", chi.ch[i]);
}
printf("\n");
return 0;
}