联合体是一种特殊的数据结构,它允许你在相同的内存位置存储不同的数据类型。
与结构体不同,联合体中的成员共享相同的内存位置,只能同时存储其中一个成员的值。
这意味着联合体的大小等于最大成员的大小。
一、联合体语法
union 联合体名称 {
member1_type member1_name;
member2_type member2_name;
// 更多成员
};
二、联合体的特性
-
内存共享:联合体的不同成员共享相同的内存位置。这意味着在任何给定时刻,联合体中只能存储一个成员的值。
-
大小等于最大成员:联合体的大小等于其中最大成员的大小。这是因为联合体必须能够容纳最大的成员。可以用 sizeof 查看。
sizeof(union)
-
访问成员:通过点语法
.
访问其成员,存储在联合体中的当前成员才是有效的。 -
使用场景:联合体通常用于需要在不同数据类型之间切换或共享内存的情况。
三、代码案例
#include <iostream>
using namespace std;
union MyUnion{
int iValue;
double dValue;
char cValue;
};
int main() {
MyUnion data;
data.iValue = 100;
cout << data.iValue << endl;
data.dValue = 100;
cout << data.iValue << endl; //0,因为联合体中只能存储一个成员的值
cout << data.dValue << endl;
cout << sizeof(data) << endl; //double 是8个字节
return 0;
}