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函数的宏定义)来清零一个内存区域。

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

pacificrack:2021年七夕VPS特别促销,$13.14/年,2G内存/2核/60gSSD/1T流量,支持Windows

pacificrack官方在搞2021年七夕促销,两款便宜vps给的配置都是挺不错的,依旧是接入1Gbps带宽,KVM虚拟、纯SSD raid10阵列,支持包括Linux、Windows 7、10、server2003、2008、2012、2016、2019在内多种操作系统。本次促销的VPS请特别注意限制条件,见本文末尾!官方网站:https://pacificrack.com支持PayPal、支...

VirMach:$7.2/年KVM-美元512MB/$7.2/年MB多个机房个机房可选_双线服务器租赁

Virmach对资源限制比较严格,建议查看TOS,自己做好限制,优点是稳定。 vCPU 内存 空间 流量 带宽 IPv4 价格 购买 1 512MB 15GB SSD 500GB 1Gbps 1 $7/VirMach:$7/年/512MB内存/15GB SSD空间/500GB流量/1Gbps端口/KVM/洛杉矶/西雅图/芝加哥/纽约等 发布于 5个月前 (01-05) VirMach,美国老牌、稳...

易探云月付18元起,香港/美国/深圳/北京VPS,CN2、BGP等多线路

易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。易探云服务器均选择当下热门线路,比如CN2 GIA、BGP线路、CN2线路等,所有云主机支持月付,并且首月优惠,年付优惠,优惠后香港沙田云服务器/独立ip/香港CN2线路,每月仅18元,188元/年。点击进入:易探云官方网站地址1、香港...

union用法为你推荐
贪婪之刃英雄联盟 贪婪之刃的被动增加金币效果可以叠加吗?曝光查询电视台曝光电话是多少?腾讯总裁是谁腾讯公司的总裁是谁?360的创始人360的老板是谁?是日本人吗?yy协议怎么用什么是歪歪协议中国化妆品真品联盟化妆品怎么查真伪神灯dnfDNF脱机挂是什么 DNF脱机挂有什么用?新掌柜俗称掌柜的是指哪种人钢铁大师钢铁大师怎么出装4tv小米电视4tv怎么用
me域名注册 域名网 个人注册域名 便宜vps vps租用 万网域名解析 备案域名出售 awardspace dropbox网盘 中国特价网 中国电信测速112 申请个人网站 韩国名字大全 怎么测试下载速度 已备案删除域名 秒杀汇 傲盾官网 cdn加速是什么 鲁诺 服务器硬件防火墙 更多