UNION 能在同一内存空间中存储不同的数据类型,但不是同时存储
#include <iostream>
using namespace std;
union TYPE
{
char chA;
int nNum;
double dNum;
};
int main(int argc, char* argv[])
{
union TYPE a;
cout<<sizeof(a)<<endl;
a.chA = 'A';
cout<<sizeof(a)<<endl;
a.nNum = 10;
cout<<sizeof(a)<<endl;
a.dNum = 10.00;
cout<<sizeof(a)<<endl;
return 0;
}
union所占内存大小 ,为其成员中字节数最大的那个,即double所占的大小
在Union中也存在内存对齐
所占内存为基本数据类型的整数倍
union TYPE
{
char szBuf[10];
char chA;
int nNum;
double dNum;
};
所占内存大小为16个字节
union TYPE
{
char szBuf[10];
char chA;
int nNum;
};
所占内存大小为12
union TYPE
{
char szBuf[10];
};
所占内存大小为10