C/C++:[4]如何使用共用体(union)

 时间:2024-10-25 05:21:54

共用体(union)是一种数据格式,它能够存储不同类型的数据,但是只能同时存储其中的一种类型。

C/C++:[4]如何使用共用体(union)

工具/原料

Microsoft Visual Studio 2012(或其他版本)

一、共用体的声明

1、共用体的语法和结构体的类似,共用体声明格式如下:union uninType{ int fourByte; char oneByte[4];};

2、定义结构后,就可以创建这种类型的变量了:uninTypeTest1;uninTypeTest2;等

二、共用体的使用1

1、假如有定义:uninType Test;test.fourByte=2;则cout << (int)test.oneByte[0] << endl;会输出显示什么?这里涉及到存储大小端模式的问题,答案见步骤2

2、有如下代码:test.fourByte=2;cout << (int)test.oneByte[0] << endl;if (test.o荏鱿胫协neByte[0] == 2) cout << "Little endian!" << endl;else cout << "Big endian!" << endl;这个代码能测试CPU的大小端模式,我使用Intel CORE i3,win7 OS得到输出如下:2Little endian!

C/C++:[4]如何使用共用体(union)

三、共用体的使用2

1、在嵌入式系统开发中,有时需要将一些变量存储在EEPROM中,变量类型若是char、坡纠课柩int就很好办,可是如果要存储fl泠贾高框oat、double类型的变量怎么办呢?这个问题可以用共用体解决:union myfloat{ char i[4]; float j;}Test;因为float是四个字节,因此我们定义一个4个元素的char数组和float公用一段内存,接下来就是EEPROM存取了

2、在程序中要使用 j 的地方使用Test.j就行了,想把 j 存入EEPROM可以这皱诣愚继样:EEPROM_WRITE(0,myfloat.i[0]);EEPROM_WRITE(1,m烤恤鹇灭yfloat.i[1]);EEPROM_WRITE(2,myfloat.i[2]);EEPROM_WRITE(3,myfloat.i[3]);注:上面参数0、1、2、3为EEPROM地址,上面的EEPROM_WRITE只是示意,有时需要对地址使用(void*)进行类型转换

3、想把 j 从EEPROM读出可以这样:myfloat.i[0]=EEPROM_READ(0);myfloat.i[1]=EEPROM_READ(1);myfloat.i[2]=EEPROM_READ(2);myfloat.i[3]=EEPROM_READ(3);然后在程序中继续使用Test.j就可以了是不是很简单呢

  • VMware虚拟机网络设置最简单思路
  • 秦时明月手游机关术如何重置
  • UOS怎样查看Xorg日志应用日志和开关机事件
  • ​Oracle如何查看用户使用的概要文件
  • echarts如何改变迁徙图箭头方向
  • 热门搜索
    勤俭节约的手抄报 生命的意义手抄报 平安手抄报内容 小学生读书节手抄报 趣味语文手抄报 数学手抄报三年级上册 铁路安全手抄报 森林防火手抄报内容 廉洁的手抄报 清明手抄报资料大全