1.介绍

        union是一种特殊的数据类型,它允许你在同一块内存区域中存储不同的数据类型。它的主要目的是节省内存,尤其是在处理多种可能的数据类型,但一次只使用其中一种的场景。

2.特点

        与 struct(结构体)不同,结构体的每个成员都拥有自己独立的内存空间,而联合的所有成员都共享同一段内存。这意味着,你给一个成员赋值,会覆盖其他成员的值(因为它们都使用相同的内存起始地址)。

        一个联合的大小至少等于其最大成员的大小,以确保能容纳下任何一个成员。

3.使用方式

union UnionName {member_type1 member1;member_type2 member2;member_type3 member3;// ...
};

4.例子        

#include <stdio.h>
#include <string.h>union Data {int i;float f;char str[20];
};int main() {union Data data;// 使用整数成员data.i = 10;printf("data.i : %d\n", data.i); // 输出: data.i : 10// 使用浮点数成员 - 这会覆盖 i 的内存data.f = 220.5;printf("data.f : %.2f\n", data.f); // 输出: data.f : 220.50// 此时再读取 data.i 将是无意义的值(是浮点数 220.5 的二进制解释)printf("data.i (after setting f) : %d (nonsense)\n", data.i);// 使用字符数组成员 - 这会覆盖之前所有的内存strcpy(data.str, "C Programming");printf("data.str : %s\n", data.str); // 输出: data.str : C Programming// 此时读取 i 或 f 都将是无意义的值printf("data.i (after setting str) : %d (nonsense)\n", data.i);printf("data.f (after setting str) : %.2f (nonsense)\n", data.f);return 0;
}

        输出结果:

data.i : 10
data.f : 220.50
data.i (after setting f) : 1100006400 (nonsense)
data.str : C Programming
data.i (after setting str) : 1819043147 (nonsense)
data.f (after setting str) : 9129985281638201200000000000000.00 (nonsense)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921270.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921270.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921270.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 arXiv Cost-Efficient Prompt Engineering for Unsupervised Entity Resolution

论文基本信息 题目&#xff1a; Cost-Efficient Prompt Engineering for Unsupervised Entity Resolution 作者&#xff1a; Navapat Nananukul, Khanin Sisaengsuwanchai, Mayank Kejriwal 机构&#xff1a; University of Southern California, Information Sciences Institu…

【XR技术概念科普】什么是注视点渲染(Foveated Rendering)?为什么Vision Pro离不开它?

一、前言2023 年&#xff0c;苹果推出了 Vision Pro 头显&#xff0c;把“空间计算”概念推向大众。与以往的 XR 设备不同&#xff0c;Vision Pro 强调高分辨率、真实感与沉浸感。然而&#xff0c;这种体验背后隐藏着一个巨大的技术挑战&#xff1a;如何在有限的计算与能耗条件…

Qt 系统相关 - 1

虽然 Qt 是跨平台的 C 开发框架&#xff0c;Qt 有很多能力其实是操作系统提供的&#xff0c;只不过 Qt 封装了系统的 API程序时运行在操作系统上的&#xff0c;需要系统给我们提供支撑&#xff01;事件文件操作多线程编程网络编程多媒体&#xff08;音频&#xff0c;视频&#…

“12306”有多牛逼?从架构师的角度详细的告诉你

12306铁路票务系统架构深度解析 &#x1f4da; 目录 系统概述业务特点与技术挑战整体架构设计核心技术架构高并发处理策略数据存储与管理缓存体系设计分布式系统架构安全防护体系性能优化策略监控与运维技术演进历程总结与展望 每到春节、国庆这种全民迁徙的时刻&#xff0c;…

数据采集机器人哪家好?2025 年实测推荐:千里聆 RPA 凭什么成企业首选?

在数字化转型加速的今天&#xff0c;数据采集已成为企业运营的核心环节&#xff0c;数据采集机器人正在重构企业的效率边界。2025 年中国 RPA 市场排名显示&#xff0c;泛微旗下的千里聆 RPA 已跻身行业前五&#xff0c;成为中大型国央企的首选品牌。本文将通过三维评估体系&am…

基础crud项目(前端部分+总结)

本人根据自己对前端微不足道的理解和 AI 老师的指导下&#xff0c;艰难地完成了基础crud代码的全栈开发&#xff0c;算是自己的第一个 Java 项目&#xff0c;对此做个简单总结。 后端部分 在前后端分离开发中&#xff0c;前端负责页面交互与数据展示&#xff0c;后端提供接口支…

MATLAB矩阵及其运算(二)函数

函数分为MATLAB内置函数及用户自定义函数&#xff0c;用户可以直接调用内置函数进行数据处理。内置函数的使用函数由三部分组成&#xff1a;名称、输入和输出。内置函数示例&#xff1a;单输入单输出函数&#xff1a;sqrt(x)&#xff1b;单输入多输出函数&#xff1a;size(x)&a…

自动化运维-ansible中对于大项目的管理

自动化运维-ansible中对于大项目的管理 一、引用主机清单 在Playbook中引用主机时&#xff0c;hosts 字段指定的目标必须与Ansible主机清单中定义的标识符完全匹配。如果清单中配置的是主机名&#xff0c;则在Playbook中使用IP地址或其他别名将无法匹配&#xff0c;导致任务被跳…

59_基于深度学习的麦穗计数统计系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

目录 项目介绍&#x1f3af; 功能展示&#x1f31f; 一、环境安装&#x1f386; 环境配置说明&#x1f4d8; 安装指南说明&#x1f3a5; 环境安装教学视频 &#x1f31f; 二、数据集介绍&#x1f31f; 三、系统环境&#xff08;框架/依赖库&#xff09;说明&#x1f9f1; 系统环…

面试问题详解十六:Qt 内存管理机制

在 Qt 开发过程中&#xff0c;很多初学者&#xff08;包括不少有经验的 C 程序员&#xff09;经常会产生这样的疑问&#xff1a;“我在 Qt 中 new 出来的控件好像都没有 delete&#xff0c;那内存不会泄漏吗&#xff1f;”比如下面这段代码&#xff1a; void Widget::createLef…

Pycharm 试用

Ubuntu 重置Pycharm试用期限&#xff08;30 天&#xff09; 先关闭Pycharm删除系统缓存 rm -rf ~/.config/JetBrains/ && rm -rf ~/.local/share/JetBrains/ && rm -rf ~/.cache/JetBrains/删除已经安装的 Pycharm 软件运行目录去官网下载新的 就行了

C++ Qt 开发核心知识

Qt 框架概述Qt 是一个跨平台的 C 应用程序开发框架&#xff0c;广泛用于开发图形用户界面程序。其核心特性包括跨平台能力、丰富的功能模块和强大的工具集。核心概念与机制元对象系统Qt 扩展了标准 C&#xff0c;通过元对象系统提供信号与槽机制、运行时类型信息和动态属性系统…

net9 aspose.cell 自定义公式AbstractCalculationEngine,带超链接excel转html后背景色丢失

AbstractCalculationEngine 是 Aspose.Cells 中一个强大的抽象类&#xff0c;允许您自定义公式计算逻辑。当您需要覆盖默认计算行为或实现自定义函数时非常有用。直接上代码1. 创建自定义计算引擎using Aspose.Cells; using System;// 创建自定义计算引擎 public class CustomC…

如何监控员工的电脑?7款实用的员工电脑管理软件,探索高效管理捷径!

当销售团队在淘宝刷单、设计师用公司电脑挖矿、程序员频繁访问代码托管网站时&#xff0c;企业损失的不仅是带宽——低效、泄密、合规风险正成为隐形利润杀手。 传统管理依赖“人盯人”或抽查日志&#xff0c;但面对分布式办公与远程协作趋势&#xff0c;这些方法早已力不从心…

机器视觉软件--VisionPro、Visual Master,Halcon 和 OpenCV 的学习路线

Halcon 和 OpenCV区别 Halcon 和 OpenCV 都是计算机视觉领域的重要工具&#xff0c;但它们的设计理念、功能侧重和适用场景有显著不同。下面这个表格汇总了它们的核心区别&#xff0c;方便你快速了解&#xff1a; 开发模式与体验​​&#xff1a;Halcon 配备了强大的​​图形化…

算法-根据前序+中序遍历打印树的右视图

题目请根据二叉树的前序遍历&#xff0c;中序遍历恢复二叉树&#xff0c;并打印出二叉树的右视图数据范围&#xff1a; 0≤n≤100000≤n≤10000 要求&#xff1a; 空间复杂度 O(n)O(n)&#xff0c;时间复杂度 O(n)O(n)如输入[1,2,4,5,3],[4,2,5,1,3]时&#xff0c;通过前序遍历…

Kafka面试精讲 Day 7:消息序列化与压缩策略

【Kafka面试精讲 Day 7】消息序列化与压缩策略 在Kafka的高性能消息系统中&#xff0c;消息序列化与压缩是影响吞吐量、延迟和网络开销的核心环节。作为“Kafka面试精讲”系列的第7天&#xff0c;本文聚焦于这一关键主题&#xff0c;深入剖析其原理、实现方式、配置策略及常见…

Xterminal软件下载_Xterminal ssh远程链接工具下载__Xterminal安装包 网盘下载_Xterminal ssh远程链接工具安装包

Xterminal 作为一款国产 SSH 工具&#xff0c;专为开发人员量身打造。它支持 SSH 和 Telnet 协议连接远程服务器与虚拟机&#xff0c;无论是进行代码部署&#xff0c;还是服务器运维&#xff0c;都能轻松胜任。软件界面采用极简设计&#xff0c;黑色背景搭配白色文字&#xff0…

Lua > 洛谷

Lua > 洛谷P1000 超级玛丽游戏P1001 AB ProblemP1008 [NOIP 1998 普及组] 三连击P1035 [NOIP 2002 普及组] 级数求和P1046 [NOIP 2005 普及组] 陶陶摘苹果P1047 [NOIP 2005 普及组] 校门外的树P1085 [NOIP 2004 普及组] 不高兴的津津P1089 [NOIP 2004 提高组] 津津的储蓄计划…

小企业环境-火山方舟和扣子

背景说明 并不是说应该怎么办&#xff0c;而是基本配置有这些可以进行使用&#xff0c;具体不同企业使用的时候肯定要个性化配置。 使用了火山方舟和扣子 火山方舟 应用实验室列表 简单使用了提示词的功能&#xff0c;后端服务ARK_API_KEY 应用ID 来对应请求发送http请求…