C语言中union的用法
在C语言中,union(联合体)是一种特殊的复合数据类型,它允许多个不同的数据成员共享同一块内存空间。与struct(结构体)不同的是,union中的所有成员共用同一个内存地址,因此同时只能存储一个成员的值。
定义union
union Data {int i;float f;char str[20];
};
union的特性
- 共用内存:
union的所有成员共享同一个内存地址,所以union的大小等于最大成员的大小。 - 节省内存:与
struct相比,union节省了内存,因为它一次只存储一个成员的值。 - 只能存一个成员的值:每次只能给一个成员赋值,赋新值会覆盖之前的值。
使用union
#include <stdio.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.f = 220.5;printf("data.f: %.1f\n", data.f);// 由于共用内存,存储新的成员会覆盖之前的成员值data.i = 15;printf("data.i after modifying: %d\n", data.i);printf("data.f after modifying: %.1f\n", data.f); // 值可能变得不可预期return 0;
}
关键点
- 当访问一个成员时,其他成员的值可能会被破坏。
union通常用于节省内存,特别是在需要存储多种不同类型但在某一时刻只使用其中一种的场景中,比如硬件寄存器处理。
应用场景
union常用于:
- 低级硬件访问:联合体可以用于直接操作寄存器或内存。
- 数据解析:比如网络协议数据包的解析中,不同的数据类型可能使用同一内存区域。
相关文章:
C语言中union的用法
在C语言中,union(联合体)是一种特殊的复合数据类型,它允许多个不同的数据成员共享同一块内存空间。与struct(结构体)不同的是,union中的所有成员共用同一个内存地址,因此同时只能存储…...
C++速通LeetCode中等第18题-删除链表的倒数第N个结点(最简单含注释)
绝妙!快慢指针法,快指针先走n步(复杂度O(n),O(1)): /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…...
鸿蒙 WebView 设置 Header
import { webview } from kit.ArkWebimport { WebHeader } from kit.ArkUI 一共两种方式: 1.把 loadurl的方法写在web组件的生命周期里面 Web({ src:"", controller: this.controller }) .onControllerAttached(()>{ this.controller.loadUrl("…...
电力施工作业安全行为检测图像数据集
电力施工作业安全行为检测图像数据集,图片总共 2300左右,标注为voc(xml)格式,包含高空抛物,未佩戴安全带,高处作业无人监护等。 电力施工作业安全行为检测图像数据集 数据集描述 这是一个专门用于电力施工作业安全行…...
大数据实验2.Hadoop 集群搭建(单机/伪分布式/分布式)
实验二: Hadoop安装和使用 一、实验目的 实现hadoop的环境搭建和安装Hadoop的简单使用; 二、实验平台 操作系统:Linux(建议Ubuntu16.04或者18.04);Hadoop版本:3.1.3;JDK版本&…...
【CSS in Depth 2 精译_036】5.6 Grid 网格布局中与对齐相关的属性 + 5.7本章小结
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…...
Qt圆角窗口
Qt圆角窗口 问题:自己重写了一个窗口,发现用qss设置圆角了,但是都不生效,不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…...
研究生第一次刷力扣day1
1.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标 直接采用暴力求解,其他解答案看不懂 大致思想:先用len函数求出数组的长度n,然后一个个遍…...
flink自定义process,使用状态求历史总和(scala)
es idea maven 依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-elasticsearch7_2.11</artifactId> <version>1.11.1</version> </dependency> import org.apache.flink.api.common.eve…...
股指期货理论价格计算公式是什么?
股指期货,作为金融衍生品的一种,其价格与现货市场的股指价格紧密相关,但又受到多种因素的影响。了解股指期货理论价格的计算公式,对于投资者进行套利交易、风险管理等具有重要意义。本文将详细解读股指期货理论价格的计算公式&…...
解决R包依赖版本不兼容问题
ERROR: dependency ‘Matrix’ is not available for package ‘irlba’ removing ‘/root/anaconda3/envs/myview/lib/R/library/irlba’ ERROR: dependency ‘Matrix’ is not available for package ‘N2R’ removing ‘/root/anaconda3/envs/myview/lib/R/library/N2R’ ER…...
HarmonyOS开发者基础认证考试试题
文章目录 一、判断题二、单选题三、多选题 因考试只有91分,所以下方答案有部分错误,如果有发现错误,欢迎提出 一、判断题 1. HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力 正确 2. 用户首选项是关系型数…...
如何使用 React、TypeScript、TailwindCSS 和 Vite 创建 Chrome 插件
创建一个 Chrome 插件是一个有趣的项目,特别是当结合使用强大的工具如 React、TypeScript、TailwindCSS 和 Vite 时 在这篇文章中,我们将逐步引导完成整个过程,了解如何在 2024 年构建自己的 Chrome 插件。无论是经验丰富的开发者还是刚刚起…...
机器学习——Stacking
Stacking: 方法:训练多个模型(可以是强模型),然后将这些模型的预测结果作为新的特征,输入到下一层新的模型(可以是多个)中进行训练,从而得到最终的预测结果。 代表:Stacking本身并没…...
在HTML中添加图片
在HTML中添加图片,你需要使用<img>标签。这个标签用于在网页上嵌入图像。<img>是一个空元素,它只包含属性,并且没有闭合标签。要在<img>标签中指定要显示的图像,你需要使用src(source的缩写…...
R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
文章目录 介绍原理应用方向下载数据加载R包导入数据数据预处理数据描述数据切割标准化数据设置参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总结系统信息介绍 支持向量机(Support Vector Machine,简称SVM)是一种…...
gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试…...
ESXi安装【真机和虚拟机】(超详细)
项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上ÿ…...
基于SpringBoot+Vue的高校门禁管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏:Java精选实战项目源码、Python精…...
【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口
目录 一、C语言文件接口回顾 C语言基础知识 C中文件操作示例 二、系统文件概念及接口 重定向基本理解的回顾 文件的基本概念 系统调用接口 open read write close lseek 什么是当前路径 一、C语言文件接口回顾 引言:我们并不理解文件!从语…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
