2026/8/31 15:52:49

c++中union/struct的区别

c++中union/struct的区别 union联合体/共用体和 struct结构体的核心区别用一句话概括就是struct 是“合租屋”每个成员都有独立房间互不干扰而 union 是“群租房”所有成员共用同一块床位只能住一个人。具体到 C/C 的内存模型和用法区别非常鲜明。对比维度struct结构体union联合体内存分配成员互不干扰独立空间成员共享同一块内存总大小成员大小之和 对齐填充最大成员的大小 对齐成员共存所有成员同时有效互不影响同一时刻只有最后一个赋值的成员有效用途组合多种不同类型的数据如学生信息节省内存或需要同一段内存不同解释时如硬件寄存器赋值影响修改某成员其他成员不变修改某成员覆盖其他所有成员的数据C 复杂度无脑用随便写包含非平凡类型时需手动管理构造/析构1. 内存分配方式的区别struct的每个成员都有自己独立的内存空间。总大小 ≥ 所有成员大小之和加上内存对齐union的所有成员共享同一块内存起始地址。总大小 最大成员的大小要满足内存对齐2. 成员存储与赋值的区别struct可以同时给所有成员赋值修改一个成员不会影响其他成员union同一时刻只能使用一个成员。给union的一个成员赋值会覆盖掉之前存储在其他成员中的数据