C++ 中的联合体是多个变量共享一段内存(相互覆盖),联合体的内存占用是所有成员中内存最大的那个所占用的大小。
1)大小足够容纳最宽的成员;2)大小能被其包含的所有基本数据类型的大小所整除。
看下面这段示例代码
#include <iostream>
using namespace std;
union U1
{
int n;
char s[12];
double d;
};
union U2
{
int n;
char s[5];
double d;
};
int main()
{
U1 u1;
U2 u2;
cout << "sizeof(u1) : " << sizeof(u1) << "sizeof(U1) : " << sizeof(U1) << endl;
cout << "sizeof(u2) : " << sizeof(u2) << "sizeof(U2) : " << sizeof(U2) << endl;
cout << "u1的地址:" << &u1 << "\nu1.n的地址:" << &u1.n << "\nu1.s的地址:" << &u1.s
<< "\nu1.d的地址:" << &u1.d << endl;
cout << "u2的地址:" << &u2 << "\nu2.n的地址:" << &u2.n << "\nu2.s的地址:" << &u2.s
<< "\nu2.d的地址:" << &u2.d << endl;
system("pause");
return 0;
}
运行结果
sizeof(u1) : 16size