C语言中union应用总结.docVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中union应用总结 定义共用体的类型变量的一般形式为: union 共用体名 { 成员列表; }变量列表; 例如: union data { int i; unsigned char c[4]; float f; }; union data a;//定义union类型的变量 共用体变量a中的成员i、c、f三个变量在内存中从同一个地址开始存储,即在同一个内存中可以用来存放几种不同类型的数据;共用体变量a所占内存的长度等于最长成员的长度,这里c[4]和f的长度都为4字节。 例如进行如下赋值: a.i = 100; a.f = 100.5; 那么此时共用体变量a中的成员i已经没有值了,因为存储该值的内存现在已经被用来存储成员f的值了。共用体成员间是共享内存的,对共用体的一个成员赋值,其他成员的值跟着发生变化。 利用共用体成员间是共享内存的这一特性,有以下几种应用: 在需要将浮点数据转移时,使用共同体,按4个字节的char型数据传输,带来通信效率的提高。一般浮点数发送方法:是将浮点数放大一定的倍数,再取整,再按整数的高低位传输。还需要传输这个放大的倍数,如果浮点数是个负数的话,还要将符号位一并发送。接收方收到这几条报文后,才能将数据还原。但是接收方还原的浮点数据与发送方发送的浮点数不一样,因为小数位数发生变化。使用共同体就不会出现这个问题了,在接收方,使用共同体,将收到到的4个char数据赋值给a.c数组,a.f就是还原的数据,这个数据和发送的数据是一样的,也不管发送的浮点数是正还是负。如有a.f = -12.34; 则a.c[0] = 0xa4, a.c[1] = 0x70, a.c[2] = 0x45, a.c[3] = 0xc1。如有a.c[0] = 0xa4, a.c[1] = 0x70, a.c[2] = 0x45, a.c[3] = 0xc1,则a.f =-12.34。使用这种方式传输浮点数,数据是不会丢失的,报文也更简单。 将浮点数保存到文件中时,保存为4个字节的char型数据,节约空间。如果保存为文本需要占用的字节数等于数值的字符的个数,有可能占用1~20字节,而用共用体的char型数据,占用的空间大小固定为4字节,对大量浮点数据的存储,节约的空间更多,分析保存的浮点数也是很方便的。 用在强制类型转换上。如将int数据转为float,可以这样使用union: a.i =1234;赋值后,a.f就是转换后的值等于1234。

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档