union [union tag] {
member - type1 member - name1;
member - type2 member - name2;
//...
} [one or more union variables];
例如:
union Data {
int i;
float f;
char str[20];
};union Data是一个共用体类型,它有三个成员:一个整数i,一个浮点数f,一个字符数组str。这三个成员共享同一块内存空间。#include <stdio.h>
#include <string.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
// 存储一个整数
data.i = 10;
printf("Stored integer value: %d\n", data.i);
// 存储一个浮点数
data.f = 22.5;
printf("Stored float value: %f\n", data.f);
// 存储一个字符串
strcpy(data.str, "Device001");
printf("Stored string value: %s\n", data.str);
return 0;
}union Data类型的变量data可以根据需要存储不同类型的数据。当我们存储一个整数时,内存空间被用于存储整数;当存储一个浮点数时,相同的内存空间被重新用于存储浮点数;当存储一个字符串时,也是如此。union Register {
uint32_t all_bits;
struct {
uint16_t status : 8;
uint16_t config : 8;
} bit_fields;
};nion Registeru可以通过all_bits成员整体访问 32 位的寄存器值,也可以通过bit_fields成员访问寄存器中的不同位字段,这样在对寄存器进行读写操作时就更加灵活,方便我们据实际需求来处理数据。“学如逆水行舟,不进则退。” 愿此篇文章成为你在技术之舟上的有力桨橹。有任何感悟或困惑,可于评论区交流探讨。若觉有益,点赞、收藏不妨一试,也期待你关注我。在技术的漫漫征途中,愿与君相伴同行,共赏知识繁花盛景,同历成长蜕变之喜。