Union(联合体、共用体)

结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

经典示例:

#include <stdio.h>
union un
{int i;char c[2];
};
int main()
{union un x;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);return 0;} 

在这个程序中,我们定义了一个联合(union)un,它包含一个整数i和一个字符数组c,这个字符数组有两个元素。
在main函数中,我们创建了一个un类型的变量x,并将x.c[0]赋值为10,x.c[1]赋值为1。然后我们打印x.i的值。
在这里,我们需要知道的是,联合中的所有成员共享同一块内存。也就是说,x.i和x.c共享同一块内存。
现在我们来看为什么输出结果是266。在这个程序中,我们假设使用的是小端存储方式。在小端存储中,对于一个多字节的数据,它的低位字节存储在低地址处,高位字节存储在高地址处。
因此,当我们将x.c[0]赋值为10(二进制表示为00001010),x.c[1]赋值为1(二进制表示为00000001)时,这两个字节被存储在内存中的顺序是0000000100001010。
这个二进制数转换成十进制是266。因此,当我们打印x.i的值时,输出结果为266。

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

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

相关文章

三十分钟学会zookeeper

zookeeper 一、前提知识 集群与分布式 ​ 集群&#xff1a;将一个任务部署在多个服务器&#xff0c;每个服务器都能独立完成该任务。 ​ 分布式&#xff1a;将一个任务拆分成若干个子任务&#xff0c;由若干个服务器分别完成这些子任务&#xff0c;每个服务器只能完成某个特…

Python代码运行速度提升技巧!Python远比你想象中的快~

文章目录 前言一、使用内置函数二、字符串连接 VS join()三、创建列表和字典的方式四、使用 f-Strings五、使用Comprehensions六、附录- Python中的内置函数总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项…

Android Studio Error “Unsupported class file major version 61“---异常信息记录

编译时异常信息 原因及解决办法 问题出在JAVA 17上&#xff0c;并且使用的Gradle JDK是&#xff1a;Android Studio java home版本17.0.1将其更改为&#xff1a;Android Studio默认JDK版本11.0.10 即可解决 操作步骤 1 2 3

“Cloud“(云)

"Cloud"&#xff08;云&#xff09;通常指的是云计算&#xff08;cloud computing&#xff09;&#xff0c;是一种通过互联网提供计算服务的模型。云计算允许用户通过网络访问和使用计算资源&#xff0c;而无需拥有或管理实际的硬件和软件基础设施。这种模型提供了一…

pycharm/vscode 配置black和isort

Pycharm blackd Pycharm中有插件可以实现后台服务运行black&#xff1a;BlackConnect 安装 在python中安装blackd 配置 Pycharm isort pycharm中&#xff0c;isort没有插件&#xff0c;暂使用外部工具实现&#xff0c;外部工具也可添加快捷键实现快捷对文件、文件夹进行fo…

代码执行相关函数以及简单例题

代码/命令 执行系列 相关函数 &#xff08;代码注入&#xff09;

【系统架构设计】计算机公共基础知识: 3 计算机网络

目录 一 计算机网络技术概述 二 TCP/IP协议簇 三 网络规划与设计 四 组网技术

Boolean源码解剖学

原创/朱季谦 有天突发其想&#xff0c;想看一下Boolean底层都做了些什么&#xff0c;故而去看了一番Boolean的源码&#xff0c;基于一些思考的基础上&#xff0c;输出了这篇文章。 一.类继承 Boolean的源码类定义部分如下&#xff1a; 1 public final class Boolean implemen…

C#,数值计算——插值和外推,双线性插值(Bilin_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 双线性插值 /// interpolation routines for two dimensions /// Object for bilinear interpolation on a matrix. /// Construct with a vector of x1. /// value…

第三十三节——组合式API生命周期

一、基本使用 组合式api生命周期几乎和选项式一致。注意组合式api是从挂载阶段开始 <template><div></div> </template> <script setup> import {onBeforeMount, onMounted,onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted, } from …

sqlite与mysql的差异

差异点 安装过程&#xff1a;MySQL服务器通常需要单独安装&#xff0c;这涉及下载适用于特定操作系统的MySQL安装程序&#xff0c;运行安装程序并按照指示完成安装过程。SQLite作为嵌入式数据库&#xff0c;可以直接使用其库文件&#xff0c;不需要单独的安装过程。 配置和管理…

Leetcode刷题详解——不同路径

1. 题目链接&#xff1a;62. 不同路径 2. 题目描述&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”…

系统安全-常见的几种sql注入攻击的方式

1.基于错误的注入 攻击者通过构造恶意的 SQL 语句&#xff0c;使得服务器返回错误信息&#xff0c;从而获取敏感信息。 例如&#xff0c;攻击者可以在登录页面的用户名和密码输入框中输入以下内容&#xff1a; or 11-- 这将使 SQL 语句变为&#xff1a; SELECT * FROM users W…

Vue前端添加水印功能

文章目录 概要技术细节附上几张调整的结果图 概要 前端Vue在页面添加水印&#xff0c;且不影响页面其他功能使用&#xff0c;初级代码水准即可使用&#xff0c;且有防人修改或者删除功能&#xff01; 提示&#xff1a;适用于Vue&#xff0c;组件已经封装开箱即用&#xff0c;有…

【LIUNX】查询IP与MAC地址

查询IP与MAC地址 A.使用ifconfig查询B.使用ip a查询 A.使用ifconfig查询 [rootserver1 ~]# ifconfig ens33: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.3.5 netmask 255.255.255.0 broadcast 192.168.3.255inet6 fe80::7b4c:6610:f082:b301 …

rpmbuild 包名 version 操作系统信息部分来源 /etc/rpm/macros.dist

/etc/rpm/macros.dist openeuler bclinux src.rpm openssl-1.1.1f-13.oe1.src.rpm 打包名称结果 openeuler openssl-1.1.1f-13.aarch64.rpm bclinux openssl-1.1.1f-13.oe1.bclinux.aarch64.rpm 验证 修改openeuler配置文件macros.dist 重新在openeuler上执行rpmbuild…

2.4 矩阵的运算法则

矩阵是数字或 “元素” 的矩形阵列。当矩阵 A A A 有 m m m 行 n n n 列&#xff0c;则是一个 m n m\times n mn 的矩阵。如果矩阵的形状相同&#xff0c;则它们可以相加。矩阵也可以乘上任意常数 c c c。以下是 A B AB AB 和 2 A 2A 2A 的例子&#xff0c;它们都是 …

【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装

一、Zabbix Agent 2介绍 Zabbix Agent 2是一款监控软件&#xff0c;由Zabbix SIA开发。Zabbix Agent 2可以提供系统、服务、应用程序和网络设备的监控及性能指标数据收集。它是通过在被监视的主机上运行来获取数据。Zabbix Agent 2可以在Linux、Unix、Windows和MAC平台上运行&…

【算法】距离(最近公共祖先节点)

题目 给出 n 个点的一棵树&#xff0c;多次询问两点之间的最短距离。 注意&#xff1a; 边是无向的。所有节点的编号是 1,2,…,n。 输入格式 第一行为两个整数 n 和 m。n 表示点数&#xff0c;m 表示询问次数&#xff1b; 下来 n−1 行&#xff0c;每行三个整数 x,y,k&am…

Elasticsearch-汇总

Elasticsearch-基础介绍 跳转 分布式全文搜索引擎&#xff1a;包含【实时搜索】和【分析引擎】 Elasticsearch-倒排索引 跳转 倒排索引 跳转 Elasticsearch-Term Dictionary和Term Index 跳转 lucene-基础介绍 跳转 Elasticsearch-联合索引 跳转 Elasticsearch-Roaring B…