ftp 企业网站,网站如何转做app,医院网站建设运营方案,小型教育网站的开发建设论文union#xff08;联合体#xff09;允许在同一内存位置上存储不同的数据类型#xff0c;所有成员共享相同的内存空间。
内存布局
由于联合体的所有成员都共享同一块内存#xff0c;因此联合体的大小是其最大成员的大小。联合体的实际大小取决于其最大成员的类型和对齐要求…union联合体允许在同一内存位置上存储不同的数据类型所有成员共享相同的内存空间。
内存布局
由于联合体的所有成员都共享同一块内存因此联合体的大小是其最大成员的大小。联合体的实际大小取决于其最大成员的类型和对齐要求。
union Data {int i; // 4 bytesfloat f; // 4 byteschar c; // 1 byte
};int main() {cout Size of union: sizeof(Data) bytes endl;return 0;
}在这个例子中int 和 float 都是 4 字节char 是 1 字节因此 union Data 的大小将是 4 字节最大成员的大小。实际的大小可能会由于对齐要求padding而有所不同但它不会小于最大成员的大小。
联合体与结构体的区别
特性structunion内存分配每个成员有独立的内存空间所有成员共享同一块内存空间内存大小大小是所有成员大小之和大小是最大成员的大小成员访问可以同时访问所有成员每次只能访问一个成员用途用于包含多个不同类型的数据并且同时使用用于只在某一时刻存储一个类型的数据
初始化联合体
联合体的初始化方式类似于结构体但只能为一个成员赋值。因为联合体的所有成员共享同一内存赋值时会覆盖其他成员的值。
union Data {int i;float f;char c;
};int main() {Data d {10}; // 初始化第一个成员 icout d.i: d.i endl; // 输出 10d.f 3.14; // 现在 d.f 被赋值d.i 被覆盖cout d.f: d.f endl; // 输出 3.14return 0;
}