联合体union
占用大小按字节数最大的变量来,下面的联合体的大小为4字节
typedef union MyUnion { char c; //1byte int i; //4byte } _MyUnion;
int main() { _MyUnion v; printf("%x, %x\n", v.c, v.i); //未初始化时的值 printf("%p, %p, %p\n", &v, &v.c, &v.i); //地址都一样 v.i = 1024; //0x400 v.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("%p-%x, ", p+i, ch); } printf("\n"); }


浙公网安备 33010602011771号