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

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

老用户专享福利 腾讯云 免费领取轻量云2核4G服务器一年

感恩一年有你!免费领取2核4G套餐!2核4G轻量应用服务器2核 CPU 4GB内存 60G SSD云硬盘 6Mbps带宽领取地址:https://cloud.tencent.com/act/pro/lighthousethankyou活动规则活动时间2021年9月23日 ~ 2021年10月23日活动对象腾讯云官网已注册且完成实名认证的国内站用户(协作者与子用户账号除外),且符合以下活动条件:账号...

Ceranetworks顶级合作伙伴 香港E3 16G 299元 香港E5 32G 650元 美国E3 16G 650元

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

搬瓦工最新套餐KVM,CN2线路

搬瓦工在国内非常流行的主机商,以提供低价的vps著称.不过近几年价格逐渐攀升.不过稳定性和速度一向不错.依然深受国内vps爱好者喜爱.新上线的套餐经常卖到断货.支持支付宝,paypal很方便购买和使用.官网网站:https://www.bandwagonhost.com[不能直接访问,已墙]https://www.bwh88.net[有些地区不能直接访问]https://www.bwh81.net...

union用法为你推荐
一什么大雾春雾雨,夏雾什么,秋雾狂风,冬雾什么sohou求一款网游 PK比较好的 可以移动 和用武器挡住对方攻击 比如像刀剑 类似的PK 玩过刀剑的朋友 推荐下sohou搜狐老总是潘石屺七匹狼香烟官网福建省的七匹狼香烟有几种、价钱各是多少六到你家男朋友第一次去女方家,他从什么可以看出他对女方家不满意?月松松针茶的注意事项大学生饿死怎么看待大学生逃课?c9外挂外挂,,,纯紫颜色怎么调配痒是谁写的痒黄龄歌词什么意思
域名估价 动态域名解析 免费二级域名 openv 美国主机评测 免费静态空间 谁的qq空间最好看 php空间推荐 美国网站服务器 ftp免费空间 linux使用教程 跟踪路由命令 空间登陆首页 阿里云手机官网 工信部icp备案查询 免费网络空间 阿里云个人邮箱 好看的空间 免费赚q币 winserver2008下载 更多