关于大小端的经典问题

2023-05-16

源代码如下:

#include <stdio.h>

int main()
{
    int a[5] ={1,2,3,4,5};
    int *ptr1 = (int*)(&a+1); 
    int *ptr2 = (int*)((int)a+1);
    printf("%x ,%x\n",ptr1[-1],*ptr2);
    return 0;
}

结果输出:

结果

思考?为什么呢?

主要涉及的问题:

  • 内存对齐
  • 大小端
  • int类型的大小
  • %x:十六进制输出

解析:

  1. int *ptr1 = (int*)(&a+1);可以这样理解:&a+1相当于a+5,相当于跨过了整个数值,然后ptr1[-1],输出其前一个,就是结果5了。
  2. int *ptr2 = (int*)((int)a+1);这个可以这样理解:这个里面(int)a+1,a是指的一个地址00h,当然地址也是由数据表示的,(int)a就是吧这个地址数据强行转换城一个整形数据,所以(int)a + 1就是一个整形数据加1,也就是0x01,然后(int *)是将这个数据强行转换成一个int地址,所以*ptr2表示的是一个01h地址中存放的int数据,所以输出的将其按16进制输出就是 02000000。

涉及大小端的问题,请参考:大小端存储

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于大小端的经典问题 的相关文章

  • 【大三操作系统实验】 请求页式管理中的置换算法

    xff08 1 xff09 FIFO算法总是选择在内存驻留时间最长的一页将其淘汰 FIFO算法认为调入内存的页不再被可能性要比其他页大 xff0c 因而选择最先调入内存的页换出 xff08 2 xff09 LRU算法基本思想 xff1a 当
  • 【大三操作系统实验】 作业进程调度算法

    xff08 1 xff09 FCFS算法 将用火作业和就绪进程按提交顺序或变为就绪状态的先后排成队列 xff0c 并按照先来先服务的方式进行调度处理 xff0c 是一种最普遍和简单的方法 xff08 2 xff09 轮转法 让每个进程中就绪
  • 成为游戏开发程序员,要学些什么

    一 游戏程序开发的工作主要包括哪些方面 游戏开发中的程序开发主要由如下几个方面组成 xff1a 1 xff0e 图形引擎 2 xff0e 声音引擎 3 xff0e 物理引擎 4 xff0e 游戏引擎 5 xff0e 人工智能或游戏逻辑 6
  • java反射记录2(20160512更新)

    private void reflectionMethodTest 获取方法 Method invalidateMethod 61 getReflectionMethod 34 android view View 34 34 invalid
  • 五险一金,你知道多少

    具体的社保构成比例为 养老保险 单位每个月为你缴纳21 你自己缴纳8 医疗保险 单位每个月为你缴纳9 你自己缴纳2 外加10块钱的大病统筹大病统筹主要管住院这块 xff1b 失业保险 单位每个月为你缴纳2 你自己缴纳1 工伤保险 单位每个月
  • STL与boost

    待细化 STL STL是standard Template Library即标准模板库的英文缩写 xff0c STL标准模板库 xff08 Standard Template Library xff09 泛型编程思想 STL主要由几个核心部
  • 头文件和库文件有何区别和联系

    头文件中有函数的申明 xff0c 库文件实现函数的定义 比如 xff0c printf函数 使用时应包括stdio h xff0c 打开stdio h你只能看到 xff0c printf这个函数的申明 却看不到printf具体是怎么实现的
  • Visual Studio Code 如何编写运行 C、C++ 程序?

    作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 30315894 answer 154979413 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非
  • c++回调函数/ROS回调函数

    以下均是个人在实际耕码的过程中遇到的问题和整理的结果 xff0c 可能会有不对的地方 xff0c 望各位指正与交流 我会有喵的 c 43 43 中的回调函数 xff1a A 34 callback 34 is any function th
  • r329开发板部署aipu模型

    上篇文章r329模拟仿真实现了在模拟器上仿真网络 xff0c 现在申请到了开发板 xff0c 就有机会在上面测试下了 本文需要的原材料 r329开发板sd 卡sd卡读卡器typec的usb线一台windows电脑一台linux电脑 开发板全
  • centos 网卡 bridge

    Interface configuration example yum install y libvirt virt install bridge utils ifcfg em2 xff1a TYPE 61 Ethernet DEVICE
  • KVM interface passthrough

    nbsp nbsp nbsp nbsp kvm passthrouth sr iov nbsp nbsp https blog csdn net yzy1103203312 article details 81092647 nbsp nbs
  • JNIEXPORT void JNICALL Java_testdll_set(JNIEnv *, jclass, jint j) //i = j;

    例如程序testdll java xff0c 内容为 xff1a public class testdll static System loadLibrary 34 goodluck 34 public native static intg
  • unicode 与UTF8

    utf 8 编码是在传输中或者保存时候是字节码 xff0c 没有大小端的问题 以存储为例 xff1a 不管是英文 xff08 1个字节 xff09 还是中文 xff08 3个字节 xff09 xff0c 不用考虑大小端问题 xff0c 直接
  • sip register超时和invite超时

    sip的register重传与超时 当发送第一个register时候 xff0c 开启定时器 xff0c 超过500ms没有响应 xff0c 重新发送 在发送的register 1s内没有响应 xff0c 在重发 xff0c 一致到32s的
  • 线性地址转物理地址

    二 线性地址转物理地址 前面说了Linux中逻辑地址等于线性地址 xff0c 那么线性地址怎么对应到物理地址呢 xff1f 这个大家都知道 xff0c 那就是通过分页机制 xff0c 具体的说 xff0c 就是通过页表查找来对应物理地址 准
  • H264/H265 PS 流分析

    对于第一帧的第一个包开始为PS头 43 系统头 43 节目映射流 1 Pack start code xff1a 包起始码字段 xff0c 值为0x000001BA的位串 xff0c 用来标志一个包的开始 2 System clock re
  • linux c/c++ 程序崩溃时打印调用栈

    本文章是在总结前人的帖子后实现的 xff0c 经过验证是可以使用的 但是在个别信号下 xff0c 还是不能详细的打印有效信息 void dump void char szLog MAX LOG LEN 61 0 int j nptrs co
  • sip stale

    ii Stale 一个标志 xff0c 用来指示客户端先前的请求因其nonce值过期而被拒绝 如果stale是TRUE xff08 大小写敏感 xff09 xff0c 客户端可能希望用新的加密回应重新进行请求 xff0c 而不用麻烦用户提供
  • C++中模板类的输入输出流重载函数实现

    转 C 43 43 模板类中操作符重载之 34 lt lt 34 和 34 gt gt 34 重载 2011 01 10 17 05 31 分类 xff1a IT与程序 标签 xff1a 字号 大 中 小 订阅 在模板类中输入流 和输出流

随机推荐

  • SIP注册过程

    SIP的注册过程很容易理解 首先我有一个号码 xff0c 但我的号码可以移动的话 xff0c 那服务器如何才能找到我呢 xff1f SIP的注册机制将sip终端的位置报告给注册服务器 这里的注册服务器仅仅是一个逻辑角色 并不一定是独立的物理
  • linux ls命令 目录下文件太多

    在查看一个文件目录下有哪些文件的时候 xff0c 有时候目录下文件太多 所以需要如下命令筛选 ls less 之后按下ctrl 43 F是下一页 xff0c 按下ctrl 43 B是上一页 xff0c 按下q是回去 有时候文件夹内文件数量太
  • protected 构造方法

    使用protected 构造方法 xff0c 是包保护措施 xff0c 出了这个包 xff0c 在别的包里面是不可以new这个对象的 假设class A 的构造函数是protected的 如果在别的包里还想用我这个类的功能 xff0c 只能
  • 简易小工具实现批量打开多个网页

    最近有个需求 xff0c 希望一次性可以打开多个网页 xff0c 网址自由指定 xff0c 这个需求的实现非常简单 xff0c 使用基本的c 43 43 代码调用system函数即可 xff0c 都不需要MFC相关的东西 但是我实测一些工具
  • STM32硬件复位后无法启动

    最近遇到一个很奇怪的问题 xff0c 把STM32的reset脚拉低后再拉高 xff0c 也就是所谓的硬件复位 xff0c 按道理来说 xff0c STM32应该重启才对 xff0c 可是并没有 xff0c 连main函数都没进去 xff0
  • c++ 除号 /

    在c 43 43 中 xff0c 经常会用到整数的除法 xff0c 但是值得注意的是整数的除法是有数据丢失的 整数除法的余数直接被丢弃 xff0c 只取了商的整数部分 不是四舍五入
  • SIP 鉴权 & HTTP 认证

    sip 鉴权是基于摘要签名认证的 具体来说 每一个用户都有一个用户名和密码 用户名和密码在客户端和SIP 服务器的数据库中都有保存 在认证的过程中 客户端将自己的信息 用户名 密码 url 等信息 做一些复杂的MD5 或者SHA256 SH
  • c++中的extern c以使用

    extern C 是c 43 43 可以正确使用c中代码而产生的 xff0c 虽然c 43 43 兼容c xff0c 但是在c 43 43 程序调用c的库时 xff0c 也会产生链接错误 因为c的库中函数的修饰规则与c 43 43 的函数修
  • 【C++】类与结构体的区别

    C 43 43 中结构体 xff08 struct xff09 我们知道C 43 43 中的 struct 对C中的 struct 进行了扩充 xff0c 它不再是只能用来封装不同类型数据的数据结构了 xff0c 而是拥有了更多的功能 xf
  • C++模板类成员函数最好和模板类声明一起放在同一个.h头文件里

    一个完整的C 43 43 程序应包括三部分 头文件 包含结构声明和使用这些结构的函数原型 头文件常包含的内容如下所示 xff1a 1 xff09 函数原型 2 xff09 使用 define或const定义的符号常量 3 xff09 结构声
  • 【VSCode】Visual Studio Code软件使用入门

    说明 这是一篇VS Code IDE软件使用入门文章 xff0c 工欲善其事 xff0c 必先利其器 xff0c 在使用新IDE之前 xff0c 不妨先对其进行一个全面了解 如果你做WPF等桌面端开发 xff0c 目前VSCode还没有好用
  • Elasticsearch 按字段进行分组 aggs 聚合 分组

    ES 按 userName 字段进行分组 统计 34 query 34 34 bool 34 34 must 34 34 range 34 34 operateTime 34 34 gt 34 34 2020 05 18 00 00 00
  • Hutool 操做excel 导出大数据 到excel

    1 hutool的版本 xff1a hutool all 4 5 15 2 POI 的版本 xff1a 3 17 lt dependency gt lt groupId gt org apache poi lt groupId gt lt
  • 使用vue-router携带不同参数多次push到一个页面时请求 不重新触发问题 ,只有第一次触发

    1 vue跳转 this router push path 39 user userDetils 39 query id JSON stringify val id name JSON stringify this searchData n
  • 惯性导航坐标系介绍

    常用坐标系定义 运载体中三维空间运动包含六个自由度 xff0c 既有角运动也有线运动 在地球表面附近 xff0c 运载体的角运动描述一般以当地水平面和地理北向为参考基准 xff1b 线运动的描述通常采用地理经度 纬度和高度表示 xff0c
  • 达梦 DM管理工具

    DM 管理工具是数据库自带的图形化工具 xff0c 可以方便快捷的对数据进行管理 在网络允许的条件下 xff0c 可通过单个管理工具 xff0c 对多个数据实例进行管理 xff0c 方便简化 DBA 对数据库的日常运维操作要求 打开DM管理
  • Windows 下 DM 的安装 和 数据库配置工具使用说明

    步骤 1 xff1a 运行安装程序 用户将 DM 安装光盘放入光驱中 xff0c 插入光盘后安装程序自动运行或直接双击 setup exe 安装程序后 xff0c 程序将检测当前计算机系统是否已经安装其他版本 DM 如 果存在其他版本 DM
  • window 下 达梦数据库的备份和还原

    DM 提供的各种工具进行备份还原与恢复的操作 xff0c 包括 DIsql工具 DMRMAN 工具 图形化客户端管理工具 MANAGER 和 CONSOLE DIsql 工具用于执 行联机的数据备份与数据还原 xff0c 包括数 归档备份据
  • Linux下与Windows的文件共享

    有三种方法 安装VMware Tools xff08 在虚拟机 gt 重新安装VMware Tools xff09 通过Winscp软件 xff08 前提Windows能ping通linux xff0c 和关防火墙 xff09 本文介绍 x
  • 关于大小端的经典问题

    源代码如下 xff1a span class hljs preprocessor include lt stdio h gt span span class hljs keyword int span main span class hlj