【C语言】联合体详解

目录

1.联合体的声明

2.联合体的特点

3.相同成员的结构体和联合体对比

4.联合体大小的计算


1.联合体的声明

像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。

联合体的特点所有成员共用同一块内存空间

所以联合体也叫:共用体给联合体其中一个成员赋值,其他成员的值也跟着变化。

#include<stdio.h>union un
{char i;int  j;
};
int main()
{union un m = { 0 };printf("%d", sizeof(m));//输出联合体的大小return 0;
}

输出的结果:

4

为什么是4呢?


2.联合体的特点


联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。

 输出的结果:

代码1输出的三个地址一模一样,代码2的输出,我们发现将i的第4个字节的内容修改为55了。我们仔细分析就可以画出,un的内存布局图。

3.相同成员的结构体和联合体对比


我们再对比一下相同成员的结构体和联合体的内存布局情况。

4.联合体大小的计算

⭐联合的大小至少是最大成员的大小
⭐当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍。

输出结果为:

8

8

 因为两个联合体中最大成员分别为5字节和7字节而对齐数均为4字节(int的大小)所以两者均需要扩充到8字节(4字节的两倍)。

以上便是我为大家带来的联合体详解的内容,若有不足,望各位大佬在评论区指出,谢谢大家!可以留下你们点赞、收藏和关注,这是对我极大的鼓励,我也会更加努力创作更优质的作品。再次感谢大家!  

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

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

相关文章

深入解析CSS3 @font-face 规则:自定义与网络字体全面指南

CSS3的font-face规则为网页设计开辟了全新的天地&#xff0c;允许开发者引入自定义字体以及网络字体资源&#xff0c;极大丰富了网页的视觉表现力与品牌一致性。本文不仅将详细解析font-face规则的工作原理、关键属性&#xff0c;还将指导您如何在实际项目中应用自定义字体&…

骑砍2霸主MOD开发(6)-使用C#-Harmony修改本体游戏逻辑

一.C#-Harmony反射及动态注入 利用C#运行时环境的反射原理,实现对已加载DLL,未加载DLL中代码替换和前置后置插桩. C#依赖库下载地址:霸王•吕布 / CSharpHarmonyLib GitCodehttps://gitcode.net/qq_35829452/csharpharmonylib 根据实际运行.Net环境选择对应版本的0Harmony.dll…

慢生活,慢光阴

不知是哪一天&#xff0c;也不知是在哪一年&#xff0c;生物钟不像以前那样准了&#xff0c;节奏也慢了许多&#xff0c;姿态也是收的&#xff0c;像暮色轻笼之下的睡莲&#xff0c;一瓣一瓣地收回盛开的花瓣&#xff1b;无谓的期盼渐渐少了&#xff0c;更在意过好每一个今天&a…

C++(Qt)软件调试---crashpad捕获崩溃(19)

C(Qt)软件调试—crashpad捕获崩溃&#xff08;19&#xff09; 文章目录 C(Qt)软件调试---crashpad捕获崩溃&#xff08;19&#xff09;1、概述2、资源地址3、配置环境4、解决报错5、测试代码6、测试结果7、Qt中使用crashpad 更多精彩内容&#x1f449;个人内容分类汇总 &#x…

Java学习路线大纲

一、Java基础 Java语言基础 变量与数据类型 运算符与表达式 控制结构&#xff08;if、switch、for、while等&#xff09; 方法与函数 数组与集合 面向对象编程 类与对象 封装、继承、多态 抽象类与接口 异常处理 泛型与注解 常用工具类与API Java常用工具类&#xff08;如Math…

c#对控件的操作无效,子线程调用主线程的控件

很多人都曾遇到过一件事&#xff0c;我明明已经对这个控件赋值了&#xff0c;或者对这个控件进行了什么操作&#xff0c;但是操作无效。我就曾遇到过这个问题。当时我上网搜了一下。其中可能出现的问题就是我在子线程中调用主线程中的控件。当时给出的答案都是使用委托来解决这…

矩阵按列相乘运算的并行化实现方法

这两天一直在琢磨如下矩阵计算问题。 已知dm矩阵X和hq矩阵Y&#xff0c;求如下矩阵&#xff1a; 其中X(:,i), Y(:,j)分别表示矩阵X, Y的第i列和第j列&#xff0c;易知Z为dh矩阵。 如果直接串行计算矩阵Z&#xff0c;两个循环共有mq&#xff0c;则会很慢&#xff0c;能不能并行化…

枚举(enum)/共用体(union)/结构体(struct)---详解

前言 C语言包含内置类型和自定义类型。 其实C语言中有内置类型&#xff0c;包含&#xff1a;char,short,int,long,long long,float,double,long double ,这些是C语言本身支持的现成的类型。 但仅仅只有内置类型是远远不够的&#xff0c;在描述一个复杂对象是无法使用内置类型来…

(不是Al创作助手、AiLink、开放猫、AiTab新标签、Official Index)分享好用的ChatGPT

目录 1、不是Ai创作助手 2、聊天 - AiLink 3、开放猫-你的智能助手 4、AiTab新标签

Java23种设计模式-创建型模式之建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff0c;也被称为生成器模式&#xff0c;是一种创建型设计模式&#xff0c;主要用于解决复杂对象的构建问题。建造者模式的主要特点是&#xff1a; 1.分离构建与表示&#xff1a;将一个复杂对象的构建与它的表示分离&…

ik分词器是什么,有那些配置? ik_smart和ik_max_word的两个分词算法有何区别?

1、ik分词器是什么&#xff0c;有那些配置&#xff1f; 1、ik分词器是什么&#xff1f; IK分词器是一种基于正向匹配的分词算法&#xff0c;它是中文自然语言处理中的一个基本环节。在搜索时&#xff0c;IK分词器会把用户的信息以及数据库或索引库中的数据进行分词&#xff0…

一般数组队列(具有伪溢出的队列)

该队列中需要用到的函数和结构体声明&#xff1a; #pragma once #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <assert.h> // 定义队列中的元素类型 typedef int Datatype;// 定义队列结构体 typedef struct Que…

react经验14:动态修改第三方组件的样式

应用场景 已知第三方组件提供了少许的属性用于程序控制部分样式&#xff0c;现在要求能控制所有细节。 实现方式 核心思路&#xff1a;使用css变量 这里以antd组件库的Tabs控件为例&#xff0c;控制Tabs被选中的页签字体样式。 定义css class&#xff0c;这里用的sass .t…

区块链安全应用------压力测试

测试要求&#xff1a; 1. 对以下AccountManager智能合约进行压测(基础要求set函数测试&#xff0c;balanceOf涵为20分加分项)2. 在本地链进行测试&#xff0c;需要监控本地进程的资源使用情况。每个进程的multiOutput属性为Avg3. 需要将每一个更改的配置文件截图&#xff0c;和…

政安晨:【Keras机器学习示例演绎】(十五)—— 用于图像分类的 CutMix 数据增强技术

目录 简介 设置 加载 CIFAR-10 数据集 定义超参数 定义图像预处理函数 将数据转换为 TensorFlow 数据集对象 定义 CutMix 数据增强功能 可视化应用 CutMix 扩增后的新数据集 定义 ResNet-20 模型 使用经 CutMix 扩展的数据集训练模型 使用原始非增强数据集训练模型 …

排列类枚举(递归)

全部排列问题 题目描述&#xff1a;输出 1…n 个数的全部排列。全部排列中&#xff0c;数字可以重复 。 例如输入 3 输出全部排列的结果如下&#xff1a;1 11、112、113、121、122、123、131、132、133、211、212、213、221、 222、223、231、232、233、311、312、313、321、…

vscode 配置verilog环境

一、常用的设置 1、语言设置 安装如下插件&#xff0c;然后在config 2、编码格式设置 解决中文注释乱码问题。vivado 默认是这个格式&#xff0c;这里也设置一样。 ctrl shift p 打开设置项 3、插件信任区设 打开一个verilog 文件&#xff0c;显示是纯本文&#xff0c;没…

Xbar控制图的定义和应用

1、定义 Xbar控制图&#xff08;X-Bar Chart&#xff09;是一种统计图表&#xff0c;用于展示数据分布情况。它通过绘制一系列数据点在均值线&#xff08;通常为X轴&#xff09;周围的分布情况来显示数据的波动性。这种图表可以用来监控生产过程、质量管理、金融分析等多个领域…

【MHA】MySQL高可用MHA介绍1-功能,架构,优势,案例

目录 一 MHA 介绍 1 MHA功能 自动化主服务器监控和故障转移 交互式&#xff08;手动启动的&#xff09;主故障转移 非交互式主故障转移 在线切换主机 2 主服务器故障转移的难点 二 MHA架构 1 MHA组件 2 自定义扩展&#xff08;脚本&#xff09; 三 MHA优势 1 MHA可以…

面试算法十问(中英文)

1.两数之和 (Two Sum) 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那两个整数&#xff0c;并返回它们的数组下标。 Given an array of integers nums and a target value target, find the two integers in the array that sum up t…