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

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

速云:广州移动/深圳移动/广东联通/香港HKT等VDS,9折优惠,最低月付9元;深圳独立服务器1050元/首月起

速云怎么样?速云,国人商家,提供广州移动、深圳移动、广州茂名联通、香港hkt等VDS和独立服务器。现在暑期限时特惠,力度大。广州移动/深圳移动/广东联通/香港HKT等9折优惠,最低月付9元;暑期特惠,带宽、流量翻倍,深港mplc免费试用!点击进入:速云官方网站地址速云优惠码:全场9折优惠码:summer速云优惠活动:活动期间,所有地区所有配置可享受9折优惠,深圳/广州地区流量计费VDS可选择流量翻...

PacificRack 端午节再来一款年付$38 VPS主机 2核4GB内存1TB流量

这不端午节和大家一样回家休息几天,也没有照顾网站的更新。今天又出去忙一天没有时间更新,这里简单搜集看看是不是有一些商家促销活动,因为我看到电商平台各种推送活动今天又开始一波,所以说现在的各种促销让人真的很累。比如在前面我们也有看到PacificRack 商家发布过年中活动,这不在端午节(昨天)又发布一款闪购活动,有些朋友姑且较多是端午节活动,刚才有看到活动还在的,如果有需要的朋友可以看看。第一、端...

无忧云(25元/月),国内BGP高防云服务器 2核2G5M

无忧云官网无忧云怎么样 无忧云服务器好不好 无忧云值不值得购买 无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免北岸建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高...

union用法为你推荐
李丹阳老公李丹阳的人物评价怀特计划布雷顿是谁?什么是布雷顿森林体系?这个体系的主要内容是什么?聊的拼音西安人说的聊咋咧什么意思情缘采集器电表箱里面的采集器是什么月松什么是花牌?网上秘书学生会秘书处面试需要问什么问题小s微薄小S当初跟了黄子佼会怎样?cisp查询CISP是什么,跟CISSP有什么区别?dnf娃娃机脚本求个DNF按键精灵抓娃娃机的代码凤姐资料关于红楼梦中王熙凤的详细资料
域名拍卖 网站域名备案查询 fdcservers 天猫双十一秒杀 申请空间 web服务器架设 空间技术网 gtt t云 台湾谷歌 Updog ebay注册 贵阳电信测速 lamp兄弟连 卡巴斯基试用版下载 ncp是什么 web服务器有哪些 神棍节 遨游论坛 linux命令vi 更多