联合体的使用
联合体的特点:
所有成员数据共用一个起始地址,而且联合体的存储空间等于所有数据成员中所占存储空间最大的一个。说白了,联合体的是指就是在任何时候,只有一个数据成员可以正常工作,你如果再给另一个数据成员赋值的话,这个刚被复制的数据成员就会覆盖之前存在的数据,因为他们公用一个存储空间。
代码示例:
#include <iostream>
using namespace std;
enum Edatatype
{
Int, Char
};
union UinputData
{
int Idata;
char Cdata;
};
struct CIO
{
Edatatype datatype;
UinputData inputdata;
CIO(Edatatype datatype) // 切记:struct结构体类型可以接受外部数据,因此我们必须把外部输入数据和内部数据相关联,在进行下一步操作
{
this->datatype = datatype;
switch (datatype)
{
case Int:
cin >> inputdata.Idata; break;
case Char:
cin >> inputdata.Cdata; break;
default: break;
}
}
};
auto SelectIO(CIO DataIO)
{
switch (DataIO.datatype)
{
case Int:
cout << DataIO.inputdata.Idata << endl; break;
case Char:
cout << DataIO.inputdata.Cdata << endl; break;
default: break;
}
}
int main()
{
Edatatype datatype = Int;
CIO Cdata(datatype);
SelectIO(Cdata);
}
结果分析: