共用体union

一、共用体的特性

共用体又叫做联合体,共用体的特性如下:
1.共用体的所有成员共用一段内存空间,且所有成员的起始位置是一致的
2.共用体的值由最后赋值的成员决定
3.共用体的内存大小

  • 共用体的内存必须大于或等于其他成员变量中最大数据类型(含数组)的大小。
  • 共用体的内存必须是最宽基本数据类型整数倍,如果不是,则填充字节。

二、共用体的用途1(判断大小端)

#include <stdio.h>
union myunion {int a;char b;
};
int main()
{union myunion test;test.a = 0x12345678;        if (test.b == 0x78)printf("小端模式");else if (test.b == 0x12)printf("大端模式");    return 0;
}

 三、共用体的用途2(给GPIO赋值)

/* 用途2: 给成员集体赋值*/
#include <stdio.h>struct GPIO{unsigned short Pin0 :1;unsigned short Pin1 :1;unsigned short Pin2 :1;unsigned short Pin3 :1;unsigned short Pin4 :1;unsigned short Pin5 :1;unsigned short Pin6 :1;unsigned short Pin7 :1;unsigned short Pin8 :1;unsigned short Pin9 :1;unsigned short Pin10 :1;unsigned short Pin11 :1;unsigned short Pin12 :1;unsigned short Pin13 :1;unsigned short Pin14 :1;unsigned short Pin15 :1;
};union IODevice{unsigned short gpiovalue;struct GPIO gpiox;
};int main()
{union IODevice IO;IO.gpiovalue=0xff;printf("%d\n",IO.gpiox.Pin0);
}

四、共用体的用途3

#include <stdio.h>
#include <stdlib.h>#define TOTAL 4  //人员总数struct{char name[20];int num;char sex;char profession;union{float score;char course[20];} sc;
} bodys[TOTAL];int main(){int i;//输入人员信息for(i=0; i<TOTAL; i++){printf("Input info: ");scanf("%s %d %c %c", bodys[i].name, &(bodys[i].num), &(bodys[i].sex), &(bodys[i].profession));if(bodys[i].profession == 's'){  //如果是学生scanf("%f", &bodys[i].sc.score);}else{  //如果是老师scanf("%s", bodys[i].sc.course);}fflush(stdin);}//输出人员信息printf("\nName\t\tNum\tSex\tProfession\tScore / Course\n");for(i=0; i<TOTAL; i++){if(bodys[i].profession == 's'){  //如果是学生printf("%s\t%d\t%c\t%c\t\t%f\n", bodys[i].name, bodys[i].num, bodys[i].sex, bodys[i].profession, bodys[i].sc.score);}else{  //如果是老师printf("%s\t%d\t%c\t%c\t\t%s\n", bodys[i].name, bodys[i].num, bodys[i].sex, bodys[i].profession, bodys[i].sc.course);}}return 0;
}

五、共用体的用途4(类型转换)

union Converter {int i;float f;
};// 使用共用体进行类型转换
union Converter conv;
conv.f = 3.14;
int intValue = conv.i;

 

六、共用体的用途5(处理特定硬件寄存器)

union Register {unsigned int reg;struct {unsigned int bit0: 1;unsigned int bit1: 1;unsigned int bit2: 1;unsigned int bit3: 1;unsigned int reserved: 28;} bits;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享几种简约大方的ListView外观设计(qml)

一、前言 最近才学到这里&#xff0c;感觉基础的 ListView 很丑&#xff0c;就现学现用弄个几个自认为还行的设计给大家献丑了。如果你觉得还不错&#xff0c;代码就在下面拿去直接用&#xff0c;顺便给我点个赞哈 ~ 感谢感谢 ~ 二、正文 设计1 第一种就是正常的左侧边栏&am…

电销平台架构的演变与升级

简介 信也科技电销平台承载了公司400多坐席的日常外呼任务&#xff0c;随着公司业务规模不断增长&#xff0c;业务复杂度不断提升&#xff0c;营销模式需要多样化&#xff0c;营销流程需要更加灵活。为了更好地赋能业务、提高客户转化率&#xff0c;电销平台不断升级优化&#…

OPC UA 学习笔记:状态机/有限状态机

有限状态机 有限状态机 &#xff08;FSM&#xff09; 是程序员、数学家、工程师和其他专业人士用来描述具有有限数量条件状态的系统的数学模型。 有限状态机的构成包括以下内容&#xff1a; 一组潜在的输入事件。与潜在输入事件相对应的一组可能的输出事件。系统可以显示的一…

19.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据分析工具数据类型配置功能的实现

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;18.数据分析工具数据与消息配置的实现 码云地址&#xff08;master 分支&#xff…

Centos9环境部署MySQL的PXC

前期理解 pxc就是将多个mysql数据库整合为一个集群&#xff0c;每台服务器上的mysql数据库会实时同步&#xff0c;而且节点与节点之间&#xff0c;他们相互的关系是对等的。PXC 最关注的是数据的一致性&#xff0c;对待事物的行为时&#xff0c;要么在所有节点上执行&#xff…

练习 5 Web [GXYCTF2019]BabyUpload

[GXYCTF2019]BabyUpload 猜测直接上传txt会被过滤&#xff0c;提示“上传类型也太露骨了吧&#xff01;”按经验传入一个"muma.phtml" 提示过滤了“ph”相关的后缀 传入muma.jpg等图像格式&#xff0c;提示表明复原并检测了文件内容 审查文件后缀Context-type 不能…

SSD LDPC软错误探测方案解读

上一篇文档中,基于SSD LDPC(Low-Density Parity-Check Codes)原理背景和纠错能力作了简单的介绍。 扩展阅读: 关于SSD LDPC纠错能力的基础探究 浅析LDPC软解码对SSD延迟的影响 本篇结合SMI发布的研究成果,通过SSD控制内部LDPC更底层的架构,来解读如何增强软错误探测能力…

外包干了8天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

java017 - Java抽象类

1、概述 一般情况&#xff0c;动物是抽象的&#xff0c;所以不能被new,比如你在Animal类中定义一个成员方法eat,你不能定义具体内容&#xff0c;比如吃鱼或者吃白菜&#xff0c;因为动物是抽象的。 一个没有方法体的方法&#xff0c;应该定义为抽象方法&#xff0c;而类中如果…

应用层协议--HTTP

目录 一.HTTP是什么&#xff1f; 二.HTTP的请求和响应 a.请求&#xff1a; b.响应&#xff1a; 三.URL 四.Header 1.Host 2. Content-Length 3. Content-Type a. 请求 b. 响应 4. Referer 5. User-Agent 6. Cookie 一.HTTP是什么&#xff1f; HTTP是一种应用层协议&#xff0c…

2024-3-7 市场分歧视角

昨天安奈儿市场带领市场情绪一致&#xff0c;新型工业化方向独占鳌头&#xff0c;日内高潮节点尾盘老龙 克来机电涨停&#xff0c;昨晚很多老师在YY老龙是不是要二波了&#xff0c;呵呵。 今天市场分歧从竞价就开始了&#xff0c;隔夜单我记忆中 天奇股份88亿&#xff0c;上海…

Leetcode 239:滑动窗口最大值

题意 大小为 k 的滑动窗口从整数数组 nums 的最左侧移到最右侧&#xff0c;只能看到滑动窗口中的 k 个数字&#xff0c;窗口每次向右移动一位。 返回滑动窗口的最大值。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输出&#xff1a;[3,3,5,5,6,7] …