外观设计网站,网站制作公司 佛山,食用油 网站 模板,传媒网页设计【嵌入式——C语言】共用体 定义#xff1a;共用体和结构体类似#xff0c;也是一种构造类型的数据结构#xff0c;在进行某些算法时#xff0c;需要使用几种不同类型的变量存到同一段内存单元中#xff0c;几个变量所使用空间相互重叠#xff0c;这几个不同的变量共同占… 【嵌入式——C语言】共用体 定义共用体和结构体类似也是一种构造类型的数据结构在进行某些算法时需要使用几种不同类型的变量存到同一段内存单元中几个变量所使用空间相互重叠这几个不同的变量共同占用一段内存的结构被称作共用体类型结构。 共用体的大小是其占内存长度最大的成员的大小共用体所有成员占用同一段地址空间。
typedef union data {short int i;char ch;float f;
} DATA;
DATA temp2;typedef union sensor_mode {int32_t word;struct {uint32_t sensorS1 : 1;uint32_t sensorS2 : 1;uint32_t sensorS3 : 1;uint32_t sensorS4 : 1;} bits;
} sensor_mode_t;union sensor_mode* pSensor;
pSensor-word i32_value;
ui-para_pud_s1-setChecked(pSensor-bits.sensorS1);
ui-para_pud_s2-setChecked(pSensor-bits.sensorS2);
ui-para_pud_s3-setChecked(pSensor-bits.sensorS3);
ui-para_pud_s4-setChecked(pSensor-bits.sensorS4);特点
同一内存段可以用来存放几种不同类型的成员但每一瞬时只有一种起作用共用体变量中起作用的成员是最后一次存放的成员在存入一个新的成员后原有的成员的值会被覆盖共用体变量的地址和它的每个成员的地址都是同一个地址共用体变量的初始化 union data a{123}初始化共用体只能为第一个成员赋值不能给所有成员都赋值。
typedef union data {unsigned char a;unsigned int b;
}DATA ;DATA temp;
temp.b0xffffffff;
printf(temp.b%x\n, temp.b);//temp.bffffffff
printf(temp.a%x\n, temp.a); //temp.a ff
temp.a 0x55;
printf(temp.b%x\n, temp.b);//temp.bffffff55
printf(temp.a%x\n, temp.a); //temp.a55