参考文章:C语言 结构体 联合体 | 嵌套使用_联合体里面嵌套结构体-CSDN博客
如题,其实直接用
联合体名.结构体成员变量名
即可。
程序:
#include <stdio.h>typedef unsigned int uint32_t;
typedef unsigned char uint8_t;union bit32_data
{uint32_t data;struct{uint8_t byte0;uint8_t byte1;uint8_t byte2;uint8_t byte3;};
};int main(void)
{union bit32_data num;num.data = 0x12345678;printf("byte0 = 0x%x\n", num.byte0);printf("byte1 = 0x%x\n", num.byte1);printf("byte2 = 0x%x\n", num.byte2);printf("byte3 = 0x%x\n", num.byte3);return 0;
}
结果:
也可以给结构体命名,则使用
联合体.结构体.成员变量名
引用。
#include <stdio.h>typedef unsigned int uint32_t;
typedef unsigned char uint8_t;union bit32_data
{uint32_t data;struct{uint8_t byte0;uint8_t byte1;uint8_t byte2;uint8_t byte3;}byte;
};int main(void)
{union bit32_data num;num.data = 0x12345678;printf("byte0 = 0x%x\n", num.byte.byte0);printf("byte1 = 0x%x\n", num.byte.byte1);printf("byte2 = 0x%x\n", num.byte.byte2);printf("byte3 = 0x%x\n", num.byte.byte3);return 0;
}
运行结果一样。