c++联合

结构体与联合体的区别

结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。

而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”;但优点是内存使用更为精细灵活,也节省了内存空间。

union DataU
{int i;		//4double d;	//8char s[7];	//7
};int main()
{cout << sizeof(DataU) << endl;DataU du;du.s[0] = 255;du.s[1] = 1;du.s[2] = 0;du.s[3] = 0;cout << du.i << endl;

在这里插入图片描述
char类型占1个字节
du.s[0]=255,du.s[0]在内存中的值是1111 1111
du.s[1]=1, du.s[1]在内存中的值是0000 0001
du.s[2]=0, du.s[2]在内存中的值是0000 0000
du.s[3]=0, du.s[3]在内存中的值是0000 0000

int类型占8个字节
du.i在内存中的值就是11111111 00000001 00000000
00000000 (小端存储,左边是低位,右边是高位)
所以i的实际值是511

联合体的应用

当角色是老师时,只用其中的course
当角色是学生时,只用其中的score
可以节省空间

struct Info
{char _name[20]; int _role;union{double score;char course[20];}_sc;
};
	Info a[4] = {Info("周老师",0,-1,"c++"),Info("周老师",0,-1,"C语言"),Info("王同学",1,90,""),Info("李同学",1,85,"")};for (int i = 0; i < 4; i++){if (a[i]._role == 0){cout << a[i]._name << "是一位老师,他是教" << a[i]._sc.course << "的" << endl;}if (a[i]._role == 1){cout << a[i]._name << "是一位学生,他的分数是" << a[i]._sc.score<<endl;}}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

XSS-libs

靶场下载地址&#xff1a;https://github.com/do0dl3/xss-labs 下载完成后解压到phpstudy的根目录下&#xff0c;访问就可以 第一关 参数name 存在alert函数&#xff0c;插入&#xff1a;<script>alert(1)</script>&#xff0c;会调用该函数&#xff0c;然后就会返…

人脑与机器连接:神经科技的伦理边界探讨

内容概要 在当今科技飞速发展的时代&#xff0c;人脑与机器连接已成为一个引人注目的前沿领域。在这一背景下&#xff0c;神经科技的探索为我们打开了一个全新的世界&#xff0c;从脑机接口到人工智能的飞跃应用&#xff0c;不仅加速了技术的进步&#xff0c;更触动了我们内心…

基于向量检索的RAG大模型

一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如&#xff0c;二维空间中的向量可以表示为 (&#x1d465;,&#x1d466;) &#xff0c;表示从原点 (0,0)到点 (&#x1d465;,&#x1d466;)的有向线段。 1.1、文本向量 1…

数字媒体技术基础:AMF(ACES 元数据文件 )

在现代电影和电视制作中&#xff0c;色彩管理变得越来越重要。ACES&#xff08;Academy Color Encoding System&#xff0c;美国电影艺术与科学学院颜色编码系统&#xff09;是一个广泛采用的色彩管理和交换系统&#xff0c;旨在解决不同设备、软件和工作流程之间的色彩不一致问…

k8s环境下rabbitmq安装社区插件:rabbitmq_delayed_message_exchange

怎么在k8s环境下的rabbitmq安装社区版插件:rabbitmq_delayed_message_exchange 在你的rabbit-value.yaml中加入以下行&#xff0c;然后使用helm重新安装&#xff08;最好把pvc也删了重新安装&#xff08;如果你的密码变化了的话&#xff09; 减少出错概率&#xff09; ## par…

C++ | Leetcode C++题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution { public:int countArrangement(int n) {vector<int> f(1 << n);f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num __builtin_popcount(mask);for (int i 0; i < n; i) {if (mask &am…

Blender进阶:贴图与UV

9 UV 9.1 贴图与UV UV&#xff0c;指定每个面顶点在贴图上的坐标 演示&#xff1a; 1、添加物体 2、添加贴图&#xff0c;即图片纹理节点 3、进入UV Edit工作区 4、右边&#xff0c;选择一个面 5、左边&#xff0c;选择一个面&#xff0c;移动这个面 9.2 电子表格 电子…

vue项目安装组件失败解决方法

1.vue项目 npm install 失败 删除node_modules文件夹、package-lock.json 关掉安装对话框 重新打开对话框 npm install

uniapp ,微信小程序,滚动(下滑,上拉)到底部加载下一页内容

前言 小程序的内容基本都是滑动到底部加载下一页&#xff0c;这个一般都没有什么好用的组件来用&#xff0c;我看vant和uniapp的插件里最多只有个分页&#xff0c;没有滚动到底部加载下一页。再次做个记录。 效果预览 下滑到底部若是有下一页&#xff0c;则会自动加载下一页&…

分布式光伏系统管理捷径——借助专业软件

在当前信息化时代&#xff0c;管理软件已经成为了各行各业中不可或缺的工具&#xff0c;光伏行业亦是如此。使用专业管理软件&#xff0c;可以帮助光伏企业实现高效管理、提高工作效率的同时降低成本&#xff0c;进而提升竞争力。本文将以客户反映较好的鹧鸪云光伏光伏与储能管…

C++基础:异常

紧接上一篇错误&#xff0c;看C如何应对这些错误问题&#xff0c;与现代编程语言类型&#xff0c;C也提供了一种错误处理机制&#xff1a;异常。 异常&#xff1a; 为了保证检测到的错误不会被遗漏&#xff0c;异常处理的的基本思想是把错误检测&#xff08;在被调函数中完成&a…

「Qt Widget中文示例指南」如何实现窗口嵌入?

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文中的示例主要演…

大数据之——MapReduce代码详解(包括无敌避坑wordcount项目)

其实这一篇我有简单提到这个MapReduse的概念&#xff0c;但是只是粗略的讲解&#xff0c;可以去大致看一眼MapReduse跟HDFS、YARN的关系&#xff1a; 大数据之——Hadoop的HDFS、YARN、MapReduce_大数据hdfs-CSDN博客 &#xff08;另外注意&#xff0c;这一篇文章需要有一定ja…

浅谈人工智能之DB-GPT环境安装

浅谈人工智能之DB-GPT环境安装 简介 DB-GPT 是一个旨在将大型语言模型与数据库操作相结合的工具&#xff0c;允许用户通过自然语言与数据库进行交互。为了充分发挥 DB-GPT 的功能&#xff0c;您需要在本地或服务器上安装并配置相应的环境。本文将为您提供详细的安装步骤。本文…

032_Tiledlayout_in_Matlab中的分块图布局

贴砖多图新方式 从R2019b开始&#xff0c;MATLAB提供了新的贴砖多图方式&#xff0c;可以更加方便的绘制多个子图。 这个功能由以下函数构成&#xff1a; tiledlayoutnexttiletilenumtilerowcol tiledlayout和TiledChartLayout对象 tiledlayout函数用于创建一个贴砖布局&a…

Vue 事件阻止 e.preventDefault();click.prevent

Vue 事件阻止 Vue 事件阻止 e.preventDefault(); click.prevent修饰符

华为荣耀曲面屏手机下面空白部分设置颜色的方法

荣耀部分机型下面有一块空白区域&#xff0c;如下图红框部分 设置这部分的颜色需要在themes.xml里面设置navigationBarColor属性 <item name"android:navigationBarColor">android:color/white</item>

ELK之路第四步——整合!打通任督二脉

ELK之路第四步——整合&#xff01;打通任督二脉 前言1.架构2.下载资源3.整合开始1.分别启动三个es2.启动kibana3.新建filebeat_logstash.yml配置文件4.修改logstash的启动配置文件5.启动logstash6.启动filebeat7.Kibana查看 4.结语 前言 在开始本篇之前&#xff0c;你需要用到…

openEuler操作系统介绍

openEuler是一款开源、免费的操作系统&#xff0c;由openEuler社区运作。当前openEuler内核源于Linux&#xff0c;支持鲲鹏及其它多种处理器&#xff0c;能够充分释放计算芯片的潜能&#xff0c;是由全球开源贡献者构建的高效、稳定、安全的开源操作系统&#xff0c;适用于数据…

恋爱脑学Rust之Box与RC的对比

在遥远的某个小镇&#xff0c;住着一对年轻的恋人&#xff1a;阿丽和小明。他们的爱情故事就像 Rust 中的 Rc 和 Box 智能指针那样&#xff0c;有着各自不同的「所有权」和「共享」的理解。 故事背景 阿丽和小明准备共同养一株非常珍贵的花&#xff08;我们称之为“心之花”&…