union用法union的用法是节约内存还是方便初始化 ?

union用法  时间:2021-10-17  阅读:()

请问union是什么意思

和struct一样,union只有先定义了共用体变量才能引用它。

而且不能直接引用共用体变量,而只能引用共用体变量中的成员。

就像我上面定义的union test。

我们不能像下面这样直接引用union: union test a; printf("%d", a); 这种直接引用是错误的,由于a的存储区有好几种类型,分别占不同长度的存储区,仅写共用体变量名a,这样使编译器无法确定究竟输出的哪一个成员的值。

所以,应该写成下面这样: printf("%d", a.mark); 同时,在使用union的时候,我们还需要注意以下的几点: 同一个内存段可以用来存放几种不同类型的成员,但在每一个时刻只能存在其中一种,而不是同时存放几种。

也就是说,每一瞬间只有一个成员起作用,其它的成员不起作用,即不是同时都存在和起作用。

单片机 C51 union 的用法

共用体声明和共用体变量定义与结构体十分相似。

其形式为: union 共用体名{ 数据类型 成员名; 数据类型 成员名; ... } 变量名; 共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。

在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。

也就是说你的int ; char ad[2]; 两个变量用同一个内存地址,有了就没有ad,有了ad就没有了 谭浩强的c语言书上有

union的用法是节约内存还是方便初始化 ?

都不是。

你得从内存的角度来理解。

比如一个int和一个char[4],如果是 struct{ int a; char [4] b; } 那在内存里是这样的 [ a ][b[3]b[2]b[1]b[0]] 而union则会使这样的 [ a ] [b[3]b[2]b[1]b[0]] 至于用处,举个比较明显的,base64编码,是把3个8位共计24位通过移位变为4个6位的数据,再对应编码。

这样的运算会有跨边界问题,如果是char,则有8位,通过位运算显然有些复杂,那我们就用上面这个共用体,给b[2]b[1]b[0]分别赋值,然后再操作a进行移位操作,这样既简单又高效。

至于节约内存之说,主要指有些数据不会同时存在,例如老师没有成绩,学生没有工资,那么成绩和工资不会同时存在,那就都用一个float的共用体表示,但是实际使用的时候只访问一个。

至于你说的初始化的问题,在windows下通常使用ZeroMemory(一个memset函数的宏定义)来清零一个内存区域。

共用体有内存对齐问题,这个有兴趣自己查找相关资料吧

ftlcloud9元/月,美国云服务器,1G内存/1核/20g硬盘/10M带宽不限/10G防御

ftlcloud(超云)目前正在搞暑假促销,美国圣何塞数据中心的云服务器低至9元/月,系统盘与数据盘分离,支持Windows和Linux,免费防御CC攻击,自带10Gbps的DDoS防御。FTL-超云服务器的主要特色:稳定、安全、弹性、高性能的云端计算服务,快速部署,并且可根据业务需要扩展计算能力,按需付费,节约成本,提高资源的有效利用率。活动地址:https://www.ftlcloud.com...

rfchost:洛杉矶vps/双向CN2 GIA,1核/1G/10G SSD/500G流量/100Mbps/季付$23.9

rfchost怎么样?rfchost是一家开办了近六年的国人主机商,一般能挺过三年的国人商家,还是值得入手的,商家主要销售VPS,机房有美国洛杉矶/堪萨斯、中国香港,三年前本站分享过他家堪萨斯机房的套餐。目前rfchost商家的洛杉矶机房还是非常不错的,采用CN2优化线路,电信双程CN2 GIA,联通去程CN2 GIA,回程AS4837,移动走自己的直连线路,目前季付套餐还是比较划算的,有需要的可...

webhosting24:€28/年,日本NVMe3900X+Webvps

webhosting24决定从7月1日开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,当然前提是价格依旧不变。目前来看,国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),这样的日本VPS还是有相当大的性价比的。官方网站:https://www.webhosting...

union用法为你推荐
xiechengwang攜程網客服方文山微博方文山简介?吉林省建设厅网站五洋建设集团 和歌山建设集团哪个好一点大学生饿死现在工作难找,在社会上会被饿死不?2013世锦赛2013年田径世界锦标赛共设有多少个项目?柔道装备柔道家各阶段带什么装备好啊?破泞之战第二幕比尔吉沃特崔斯特第二幕是皮肤吗空气有毒空气中的有害致癌物质是哪些刘丹怎么死的听说“香妃”刘丹的父亲和哥哥因为疾病和意外已经去世?是不是真的?猎聘网登陆猎聘同道和猎聘网是什么关系?
国外服务器租用 东莞服务器租用 韩国俄罗斯 uk2 la域名 Hello图床 云主机51web 好看的桌面背景图片 网页背景图片 圣诞节促销 网盘申请 我爱水煮鱼 申请个人网站 linux服务器维护 美国独立日 腾讯总部在哪 秒杀品 云服务器比较 netvigator 国外免费网盘 更多