上篇博客,笔者详细的介绍了联合的的使用方法!所以,笔者在这篇文章打算进行:联合体的特点及其大小的计算的讲述!!


联合体的特点:

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


下面进入本篇文章的重中之重的部分:联合体大小的计算!!

在进行下面的内容之前,我们需要知道:

1.联合体的大小至少是最大成员的大小!!

2.当最大成员的大小不是最大对齐数的整数倍的时候,就要对齐到最大对齐数的整数倍!

3.联合体的大小,不一定总是最大成员的大小!

下面请看笔者代码部分:

#include <stdio.h>union un
{char arr[5];  //5个字节int i;        //4个字节
};int main()
{printf("%d\n", sizeof(union un));return 0;
}

对于这个代码,该联合体成员的大小一个为5,一个为4,但是最后运行出来的结果却为:8!!这个又是为什么呢??

对联合体的内容进行分析:

因此,上面再内存中的分配情况为:

笔者在借用几个联合体的代码,来带领大家分析一下:

1.

union un
{short s[6];int i;
};

对于该段联合体的分析情况为:

在这里,我们需要铭记的是:最大成员的大小是:最大对齐数的整数倍!!

2.将上面的数组short s[6]更改为:short s[7]

union un
{short s[7];int i;
};

对于该段联合体的分析情况为:上述联合体的大小为:16

本文到此就结束了!若各位老铁有不懂得地方,请私聊笔者,或者评论区发一评论哟!!

联合体的特点及其大小的计算相关推荐

  1. 线段树分裂与合并的模板以及空间大小的计算

    学习知识来自AGOH的B站视频 银酱对线段树合并空间大小的计算 模板题 #include <bits/stdc++.h>using namespace std; typedef long ...

  2. struct和class内存大小的计算

    以下均是在VS2017下的结果 结构体内存大小的计算: 用例一: #include<stdio.h> union ss {int a;char b; }; struct MyStruct ...

  3. UDP和TCP协议包大小的计算-转

    UDP和TCP协议包大小的计算 UDP一次发送数据包的大小,TCP一次发送数据包的大小. MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+S ...

  4. 安卓图片内存优化(一)——图片占用内存大小的计算

    安卓开发中经常会遇到因为图片处理不当导致的oom问题,因为系统分配给每个应用的最大内存空间是有限的,正常只有几十上百兆(排除通过特殊手段获取到几百兆内存空间的情况).所以为了节省更多的空间需要对图片进 ...

  5. 位深度/像素/分辨率/图像大小的计算/帧率/刷新率

    有关图像的基本名词解释: 位深度: 在记录数字图像的颜色时,计算机实际上是用每个像素需要的位深度来表示的.黑白二色的图像是数字图像中最简单的一种,它只有黑.白两种颜色,也就是说它的每个像素只有1位颜色 ...

  6. 正方形类的定义,比较两个日期的大小并计算其间隔天数

    实验项目5:常用实用类 一.实验目的和要求 学会覆盖Object类中常用方法: 学会使用Math类中常用方法: 学会字符串的常用操作: 学会常用日期类的使用方法. 二.实验内容与步骤 1.定义一个名为 ...

  7. 关于结构体和联合体大小的计算

    一: 结构体   1:当没有定义 #pragma pack(value) 这种指定 value 字节进行对齐时,   它的计算规则是:整体的大小在满足为最大数据类型所占字节的倍数下要达到所占内存最小. ...

  8. 卷积神经网络系列之卷积/池化后特征图大小怎么计算??

    1.卷积后的大小: W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长 width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高 w ...

  9. c语言 3个人比饭量大小,OpenJudge计算概论-比饭量【枚举法、信息数字化】

    /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...

最新文章

  1. php看什么教程,PHP初学者适合看什么
  2. 关于鸿蒙 2.0,那些开发者不知道的一切
  3. QT的QGraphicsItemGroup类的使用
  4. 编程语言分类及python所属类型
  5. CodeForces - 1373D Maximum Sum on Even Positions(最大连续子段和)
  6. Linus Torvalds 警告:勿用 Linux 5.12 rc1,担心供应链攻击?
  7. 伪指令 ENTRY 与 END
  8. Oracle用户权限分配的具体方法
  9. 如何复制百度文库的内容
  10. 使用命令运行jmeter并自动生成测试报告
  11. 做对的事情远比把事情做对重要得多
  12. 用Python制作我的核酸检测日历
  13. 局域网即时通讯软件_企业即时通讯软件需要符合哪些要求?
  14. 漫漫Java学习路,第十四天
  15. 用python解“计算工资”题
  16. 转摘--Dism 编辑Windows WIM 文件
  17. Java学习之:如何将 java 程序打包成 .jar 文件
  18. 3DTouch功能开发
  19. 分享职场心得《14》
  20. GStreamer播放教程05——色彩平衡

热门文章

  1. Python处理数据中的空值(缺失值)时用到的dropna()函数和fillna()函数总结,通过示例弄懂这两个函数的用法。
  2. 互联网进入“降本增效”时代
  3. java中p表示什么意思_javap -c命令关键字的含义
  4. sts写java没有自动补齐,STS 创建 Maven 项目填坑
  5. java获取当前时间和设置时间格式
  6. oracle合计去掉重复,关于oracle 去掉重复数据问题
  7. hda and hdb
  8. mybatis报错:前言中不允许有内容
  9. 【解决打开远程共享目录中的word、excel、ppt文档失败】
  10. VMware设置桥接上网