C++ union 联合(八股总结)

devtools/2025/1/17 18:05:16/

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;
}
  • 在这个例子中,intfloat 都是 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;
}

http://www.ppmy.cn/devtools/151328.html

相关文章

高性能计算服务器是指什么?

高性能计算服务器是一种具有高网络传输速度、快速极端和高速存储功能的服务器&#xff0c;高性能服务器还采用了先进的硬件技术和优化的软件配置&#xff0c;为企业和用户提供更快的响应时间和更高的并发处理能力&#xff0c;一般会用于处理大规模数据和复杂的计算任务当中。 本…

Spring Boot 下的Swagger 3.0 与 Swagger 2.0 的详细对比

先说结论&#xff1a; Swgger 3.0 与Swagger 2.0 区别很大&#xff0c;Swagger3.0用了最新的注释实现更强大的功能&#xff0c;同时使得代码更优雅。 就个人而言&#xff0c;如果新项目推荐使用Swgger 3.0&#xff0c;对于工具而言新的一定比旧的好&#xff1b;对接于旧项目原…

销售团队如何选择销售业绩统计表模板?

在销售团队中&#xff0c;统计和分析业绩是日常工作的重要部分。比如&#xff0c;通过统计表&#xff0c;我们可以看到上个月各销售员的成交额&#xff0c;了解哪些产品受欢迎&#xff0c;哪些区域市场潜力大。这不仅帮助我们回顾过往表现&#xff0c;还能为未来决策提供依据。…

链表 -- 反转链表,k个一组翻转链表,两两交换链表中结点

目录 反转链表 题目 ​编辑 分析 代码 k个一组翻转链表 题目 分析 代码 两两交换链表中的结点 题目 ​编辑 分析 代码 反转链表 题目 分析 反转过程: newhead作为遍历指针,最终停在尾结点上prev保存上一个结点,通过改变newhead和prev的连接来实现反转(核心)通过ne…

Kubernetes 部署 RabbitMQ 集群教程

本文介绍如何在 Kubernetes 中部署 RabbitMQ 集群&#xff0c;包含从命名空间创建到配置 NFS 存储的详细步骤。 参考文档&#xff1a; RabbitMQ 集群部署NFS StorageClass 创建 部署步骤 1. 创建命名空间 kubectl create ns rabbitmq2. 创建 RBAC 权限 创建文件 rabbitmq…

力扣 394. 字符串解码

&#x1f517; https://leetcode.cn/problems/decode-string 题目 对字符串中的 k[s] 解码为 s 重复 k 次 思路 碰到数字&#xff0c;开始进行递归 decode 展开&#xff0c;否则字符不解码针对于解码的部分&#xff0c;先明确 k 的数字是多少&#xff0c;再明确 [ ] 括号中…

精通Python (10)

一&#xff0c;基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&#xff0c;从这…

2025-1-15-十大经典排序算法 C++与python

文章目录 十大经典排序算法比较排序1. 冒泡排序2. 选择排序3. 插入排序4. 希尔排序5. 归并排序6. 快速排序7. 堆排序 非比较排序8. 计数排序9. 桶排序10. 基数排序 十大经典排序算法 十大经典排序算法可以分为比较排序和非比较排序: 前者包括冒泡排序、选择排序、插入排序、希…