共用体的成员与特性
#include "stdafx.h"
#include <string.h>
#if 0
结构体的大小是由所有成员空间大小组合而成
共用体的大小是由最大的成员空间大小决定的
结构体每一个成员都是拥有自己的地址
而共用体每一个成员共同拥有一个起始地址
虽然所有成员共用一段内存,但是真正意义的,
只有最后一赋值的变量是有意义的
union untest
{
unsigned char c;
unsigned short s;
unsigned int i;
}myun;
printf("sizeof(myun)=%d\n", sizeof(myun));
printf("%p\n", &myun.c);
printf("%p\n", &myun.s);
printf("%p\n", &myun.i);
//打印的地址相同
myun.i = 0x11223344;
printf("myun.i=%x\n", myun.i);//11223344
printf("myun.s=%x\n", myun.s);//3344
printf("myun.c=%x\n", myun.c);//44
#endif
union untest
{
char str[10];
int var;
}myun;
int _tmain(int argc, _TCHAR* argv[])
{
strcpy(myun.str, "china");
printf("myun.str=%s\n", myun.str);//china
printf("myun.var=%s\n", myun.var);//显示有误
myun.var = 200;
printf("myun.var=%s\n", myun.var);//200
printf("myun.str=%s\n", myun.str);//显示有误
return 0;
}