【LittleXi】地址空间三题

news/2025/2/4 3:41:37/

【LittleXi】地址空间三题

问题

给定这个结构体

struct
{bool s;short b;const char *str = "AABB";int i;
} a[2];

计算这三个输出

printf("%d\n", (char *)(&(a[0].i)) - (char *)(&(a[0].s)));
printf("%x\n", (&(a[1].i)) - (&(a[0].i)));
printf("%x\n", *(short *)(a[0].str + 2) - *(short *)(a[0].str));

分析及答案

第一问:答案是16,由存储结构可知,计算的是a[0]中i的位置减去s的位置
第二问:答案是0x6,计算的是两个数组同一位置的差值,其实就是一个结构体的大小,由存储结构可知为8+8+4+4=24=0x18,但是根据指针减法特性,应该除以int的大小也就是0x18/4,答案为0x6
第三问:答案是0x101,这题比较神奇,先获取str首位置便宜02的位置,然后把他转为short*类型,然后再解地址,
因为被强转为了short,所以会解2个byte的值出来,*(short *)(a[0].str + 2)解值出来是"BB"对应16进制的0x4242*(short *)(a[0].str)解值出来是"AA"对应16进制是0x4141,
第三问其实已经降低难度了,如果str是"ABCD",那么根据小端法原则,解值出来是"DC""BA"

地址存放如下:

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1171996.html

相关文章

订水商城H5实战教程-02系统登录

目录 1 创建数据源2 创建自定义应用3 创建全局变量4 实现登录功能5 控制弹窗是否显示6 最终的效果 上一篇我们分析了订水商城的功能,功能分析好了之后,就需要开发功能。用户登录商城的第一步就是进行登录,登录的时候需要同意用户协议&#xf…

Arduion 驱动 ADXL335三轴加速度计模块

Arduion 驱动 ADXL335三轴加速度计模块 简介电气参数原理图接线代码实验结果 简介 ADXL335是一个小,薄,低功率,完整的三轴加速度计,具有信号调节电压输出。该产品测量加速度的最小全尺度范围为3 g。它可以测量倾斜传感应用中重力…

QCC 音频输入输出

QCC 音频输入输出 QCC蓝牙芯片(QCC3040 QCC3083 QCC3084 QCC5181 等等)支持DAC、I2S、SPDIF输出,AUX、I2S、SPDIF、A2DP 输入 蓝牙音频输入,模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 输入方式切换参考 sta…

越来越好用的Edge浏览器,盘点Edge浏览器功能丨插件

前些年, Edge 浏览器也宣布加入 Chromium 内核;它的前身是IE浏览器, Edge之所以越来越多人用的一个原因是因为它的内核是Google Chrome的Chromium,而且不需要膜法就可以使用,这一点Chrome浏览器还不行,访问…

普通二维码跳转微信小程序实战

简介 服务端springboot项目,前端基于uniapp的微信小程序,要求扫描二维码之后进入到小程序指定页面,下面记录一下实现过程以及过程中遇到的问题. 实现过程 下面是成功跳转的配置截图: 首先说下二维码规则,这个地方需要填写扫描二维码之后打开的地址,这个地址在我的项目里…

【X3m】DDR压力测试

Index of /downloads/unittest/ 设置CPU模式和降频温度# 若设备重启需再次配置这两条指令 echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor echo 105000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp #1 cpu test ec…

2.2.C++项目:网络版五子棋对战之数据管理模块-数据库的设计

文章目录 一、数据管理模块实现(一)功能 二、设计(一)数据库设计(二)创建user_table类 一、数据管理模块实现 (一)功能 数据管理模块主要负责对于数据库中数据进行统一的增删改查管…

Pandas pivot - ValueError: Index contains duplicate entries, cannot reshape

pivot()报错 在使用pivot()进行长表转宽表时,会出现如下错误: ValueError: Index contains duplicate entries, cannot reshape例: // For an Example df pd.DataFrame({"foo": [one, one, two, two],&q…