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

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

RAKsmartCloud服务器,可自定义配置月$7.59

RAKsmart商家一直以来在独立服务器、站群服务器和G口和10G口大端口流量服务器上下功夫比较大,但是在VPS主机业务上仅仅是顺带,尤其是我们看到大部分主流商家都做云服务器,而RAKsmart商家终于开始做云服务器,这次试探性的新增美国硅谷机房一个方案。月付7.59美元起,支持自定义配置,KVM虚拟化,美国硅谷机房,VPC网络/经典网络,大陆优化/精品网线路,支持Linux或者Windows操作...

DogYun春节优惠:动态云7折,经典云8折,独立服务器月省100元,充100送10元

传统农历新年将至,国人主机商DogYun(狗云)发来了虎年春节优惠活动,1月31日-2月6日活动期间使用优惠码新开动态云7折,经典云8折,新开独立服务器可立减100元/月;使用优惠码新开香港独立服务器优惠100元,并次月免费;活动期间单笔充值每满100元赠送10元,还可以参与幸运大转盘每日抽取5折码,流量,余额等奖品;商家限量推出一款年付特价套餐,共100台,每个用户限1台,香港VPS年付199元...

Sharktech10Gbps带宽,不限制流量,自带5个IPv4,100G防御

Sharktech荷兰10G带宽的独立服务器月付319美元起,10Gbps共享带宽,不限制流量,自带5个IPv4,免费60Gbps的 DDoS防御,可加到100G防御。CPU内存HDD价格购买地址E3-1270v216G2T$319/月链接E3-1270v516G2T$329/月链接2*E5-2670v232G2T$389/月链接2*E5-2678v364G2T$409/月链接这里我们需要注意,默...

union用法为你推荐
圆通内网圆通速递内网查询怀特计划为争夺战后世界经济的主导权,英美两国于1943年7月分别发表了各自的战后方案,即美国的“怀特计划”和英国的“凯恩斯计划”。战后,英美两国展开了激烈的斗争,在美国允诺给英国巨额贷款的诱惑下,英国被迫接受了美国的方案。这充分说明方文山微博方文山简介?罗斯柴尔德家族现状现在为什么很少听说罗斯柴尔德家族了?他们现在怎么样?熬星文言文里水浒传108将出场诗铁路售票网站在哪个网站买火车票好yy协议怎么用yy协议怎么开中国化妆品真品联盟亲们,化妆品正品网站有哪些?中国化妆品真品联盟化妆品有防伪码在哪儿可辨真假sj综艺节目sj在中国的所有综艺节目
欧洲免费vps vps交流 com域名抢注 hostigation godaddy主机 debian源 anylink 七夕快乐英文 idc是什么 万网空间购买 网站在线扫描 免费私人服务器 drupal安装 厦门电信 web服务器搭建 腾讯总部在哪 免费asp空间 论坛主机 lamp怎么读 免费稳定空间 更多