【嵌入式——C语言】共用体

这篇具有很好参考价值的文章主要介绍了【嵌入式——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);

特点文章来源地址https://www.toymoban.com/news/detail-815671.html

  1. 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;
  2. 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;
  3. 共用体变量的地址和它的每个成员的地址都是同一个地址;
  4. 共用体变量的初始化 union data a={123};初始化共用体只能为第一个成员赋值,不能给所有成员都赋值。
typedef union data {
 unsigned char a;
 unsigned int b;
}DATA ;

DATA temp;
temp.b=0xffffffff;
printf("temp.b=%x\n", temp.b);//temp.b=ffffffff
printf("temp.a=%x\n", temp.a); //temp.a = ff
temp.a = 0x55;
printf("temp.b=%x\n", temp.b);//temp.b=ffffff55
printf("temp.a=%x\n", temp.a); //temp.a=55

到了这里,关于【嵌入式——C语言】共用体的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包