C语言中union应用总结.doc
《C语言中union应用总结.doc》由会员分享,可在线阅读,更多相关《C语言中union应用总结.doc(2页珍藏版)》请在装配图网上搜索。
C语言中union应用总结定义共用体的类型变量的一般形式为:union 共用体名 成员列表;变量列表;例如:union data int i; unsigned char c4; float f; ;union data a;/定义union类型的变量共用体变量a中的成员i、c、f三个变量在内存中从同一个地址开始存储,即在同一个内存中可以用来存放几种不同类型的数据;共用体变量a所占内存的长度等于最长成员的长度,这里c4和f的长度都为4字节。例如进行如下赋值:a.i = 100;a.f = 100.5;那么此时共用体变量a中的成员i已经没有值了,因为存储该值的内存现在已经被用来存储成员f的值了。共用体成员间是共享内存的,对共用体的一个成员赋值,其他成员的值跟着发生变化。利用共用体成员间是共享内存的这一特性,有以下几种应用:1、 在需要将浮点数据转移时,使用共同体,按4个字节的char型数据传输,带来通信效率的提高。一般浮点数发送方法:是将浮点数放大一定的倍数,再取整,再按整数的高低位传输。还需要传输这个放大的倍数,如果浮点数是个负数的话,还要将符号位一并发送。接收方收到这几条报文后,才能将数据还原。但是接收方还原的浮点数据与发送方发送的浮点数不一样,因为小数位数发生变化。使用共同体就不会出现这个问题了,在接收方,使用共同体,将收到到的4个char数据赋值给a.c数组,a.f就是还原的数据,这个数据和发送的数据是一样的,也不管发送的浮点数是正还是负。如有a.f = -12.34; 则a.c0 = 0xa4, a.c1 = 0x70, a.c2 = 0x45, a.c3 = 0xc1。如有a.c0 = 0xa4, a.c1 = 0x70, a.c2 = 0x45, a.c3 = 0xc1,则a.f =-12.34。使用这种方式传输浮点数,数据是不会丢失的,报文也更简单。2、 将浮点数保存到文件中时,保存为4个字节的char型数据,节约空间。如果保存为文本需要占用的字节数等于数值的字符的个数,有可能占用120字节,而用共用体的char型数据,占用的空间大小固定为4字节,对大量浮点数据的存储,节约的空间更多,分析保存的浮点数也是很方便的。3、 用在强制类型转换上。如将int数据转为float,可以这样使用union: a.i =1234;赋值后,a.f就是转换后的值等于1234。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 union 应用 总结
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文