参考文章: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;
}
运行结果一样。