再看结构体对齐与小端联合问题
再看结构体对齐与小端联合问题
@(组成原理)
先再次回看一道题目的分析。
(2012.15)某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int型和short型长度分别为32位和16位,并且按照边界对齐存储。某C语言程序段如下:
struct
{int a;char b;short c;
}record;
record.a = 273;
若record变量的首地址为0xC008,则地址0xC008中内容及record.c的地址分别是:0x11,0xC00E.
分析:直接解题。边界存储指代的是结构体的总长度大小是内部最大成员的整数倍。
int是4B,那么结构体大小要是4B的倍数。三个变量之和为7B,因此需要对齐到8B,char b只有1B,所以在b后面留白1B。
273 = 1,0001,0001B
地址从左到右增长。
数据的地位从左到右下降,联想算盘从右到左个,十,百。。。
小端是低地址存数据低位。
又因结构体首地址就是第一个变量的地址,因此,0xC008的内容就是0x11,即a的0001,0001B。以字节为单位,字节内一定是从左到右扫描。
知道在char b处留白一个字节,因此c是在0xC00E.
再看结构体对齐与小端联合问题相关推荐
- 结构体对齐计算(超详细讲解,一看就会)
想要计算结构体大小,咱就先要清楚结构体内存对齐的规则: 1.结构体的第一个成员直接对齐到相对于结构体变量起始位置为0处偏移. 2.从第二个成员开始,要对齐到某个[对齐数]的整数倍的偏移处. 3.结构体 ...
- C语言结构体对齐[转]
C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...
- C语言结构体对齐详解
文章目录 一.C语言结构体对齐大小快速判断 二.反汇编角度看结构体 三.总结 一.C语言结构体对齐大小快速判断 在C语言中定义一个结构体,里面具体占用多少个字节呢,先举一个例子,如下: #includ ...
- memcpy函数与结构体对齐
memcpy C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1. str1 ...
- 深度了解什么是结构体对齐
1:什么是结构体对齐 相信很多朋友在计算结构体的时候计算出来的值和实际运算出来的是不一样的就比如这样一个结构体 当我们表面看的时候一眼就认为这是占用了6个字节,可是计算出来的却是12个字节,到这里不少 ...
- C语言之结构体以及结构体对齐访问
1:简单理解,结构体就是数组的进一步发展,数据的优点和缺陷在于数据里面是元素类型必须相同,但是结构体没有这个要求,结构体里面元素的类型可以相同也可以不同. 2:结构体的定义: struct stude ...
- 结构体对齐,#pragma pack
一.结构体对齐 首先通过一个例子说明结构体对齐,可以看到,下面这个结构体占32字节(32位) typedef struct {double d;short s;int i;char c;short s ...
- 这个结构体对齐输出有意思
这个题目是我在群里看到大家讨论的,既然是讨论的了,那我就拿出来说说,因为笔试面试的时候,可能就会遇到这样的题目. 实例代码 #include "stdio.h" #include ...
- linux windows 结构体,Linux下C语言——结构体对齐
结构体对齐的步骤: 1.结构体各成员对齐 2.整个结构体圆整 结构体对齐的特定对齐值: 1.自身对齐值: 自身对齐值就是结构体变量里每个成员的自身大小; 2.指定对齐值: 指定对齐值是由宏#pragm ...
最新文章
- Spring Boot 基于注解驱动源码分析--自动配置
- 洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]
- vue全局路由守卫beforeEach
- redhat rpmforge epel 安装源配置
- 信息系统项目管理基础(1)
- linux+tar怎样解压,如何在Linux上使用tar命令解压和压缩文件
- [高性能javascript笔记]1-加载和执行
- OpenCart框架运行流程介绍opencart资料链接
- linux重新开始学习
- 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出
- 揭秘孙小小《PPT演示之道》
- 三维数据入库发布流程之3dMAX数据
- TikTok Shop 英国限售商品规则
- php解密encrypteddata,PHP解密支付宝小程序的加密数据、手机号的示例代码
- C语言求x个电阻并联的和的程序,C语言 计算并联电阻的阻值
- 【持续更新】Pun多人在线游戏开发教程
- 树莓派制作路由器,手机连接wifi
- JVM调优专题-JVM调试工具
- mac系统如看OFD文档
- Direct3D中的纹理映射
热门文章
- select 实现类似多线程_linux进程通信--socket套接字(四)--多路IO转实现一个server对应多个client...
- 计算机字长与下列哪项指标密切相关,组成原理与汇编语言-中国大学mooc-题库零氪...
- 虚拟服务器的密码忘记了,忘记虚拟密码
- android 字体淡入淡出,如何让文字在Android中淡入淡出?
- 天庭最牛系统 推荐下载_围观RecSys2020 | 推荐系统顶会说了啥?(附论文打包下载)...
- mysql 处理一条语句卡死_一条MySQL查询语句,卡死机器,不知道为什么,求高手指点!...
- 江苏职称计算机考试错做题,江苏省职称计算机考试word注意点.doc
- 数据库事务4种隔离级别和7种传播行为
- linux 文件安装大全,linux 文件包安装大全
- 编程实现strcpy函数_C编程中的strcpy()