Union
union的首地址是固定的,大小以成员变量中所需内存最大的一个为准(sizeof());
#include <iostream>
using namespace std;
union test
{
char mark;
long num;
float score;
}a;
int main()
{
cout<<sizeof(char)<<endl;
cout<<sizeof(long)<<endl;
cout<<sizeof(float)<<endl;
// cout<<a<<endl; // wrong
a.mark = 'b';
cout<<a.mark<<endl; // 输出'b'
cout<<a.num<<endl; // 98 字符'b'的ACSII值
cout<<a.score<<endl; // 输出错误值
cout<<"sizeof(a)="<<sizeof(a)<<endl;
a.num = 99;
cout<<a.mark<<endl; // 输出空
cout<<a.num<<endl; // 输出10
cout<<a.score<<endl; // 输出错误值
cout<<"sizeof(a)="<<sizeof(a)<<endl;
a.score = 100.0;
cout<<a.mark<<endl; // 输出空
cout<<a.num<<endl; // 输出错误值
cout<<a.score<<endl; // 输出10
cout<<"sizeof(a)="<<sizeof(a)<<endl;
system("pause");
return 0;
}
|