占用大小按字节数最大的变量来,下面的联合体的大小为4字节
typedef union MyUnion {char c; //1byteint i; //4byte } _MyUnion;
int main() {_MyUnion v;printf("%x, %x\n", v.c, v.i); //未初始化时的值printf("%x, %x, %x, %x\n", &v, &v.c, &v.i); //地址都一样 v.i = 1024; //0x400v.c = '1'; //0x31, 只修改第1个字节, 2,3,4字节维持不变printf("%x, %c, %x\n", v.c, v.c, v.i);//遍历union的每个字节v.i = 0xabc;char *p = &v;char bytes = sizeof(_MyUnion);unsigned char ch;for (int i = 0; i < bytes; ++i) {ch = *(p + i);printf("%x-%x, ", p+i, ch);}printf("\n"); }