数组和指针的练习解析(4)

news2025/1/20 7:06:02

题目:

int main() 

{       int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 

        int *ptr1 = (int *)(&aa + 1);

        int *ptr2 = (int *)(*(aa + 1));

        printf( "%d,%d", *(ptr1 - 1), *(ptr2 - 1));

        return 0;

 }

思路分析:

  int *ptr1 = (int *)(&aa + 1);

  • &aa表示整个数组的地址,&aa+1表示越过了一个数组大小的地址位置,整个数组的地址在首元素地址之前的内存空间中,因此如上图所示。
  • (int*)是强制类型转化,将其转化为int类型的指针。

    int *ptr2 = (int *)(*(aa + 1));

  • aa相当于首元素地址,在二维数组中首元素地址就是第一行的地址,而aa+1表示的就是第二行地址

  •  且aa+1 又可以转化为aa[1]表示数组名,表示的是第二行的数组名,那么可以表示第二行第一个元素的地址而*就表示第二行第一个元素,此处的int*强制类型转化是没有用的。

 

  *(ptr1 - 1), *(ptr2 - 1)

*(ptr1 - 1)

  • *(ptr1-1)ptr因为是int类型的指针,且被传输了&aa+1的地址,那么ptr-1根据数据类型-1就是减去四个字节,所以根据上图所示,我们得知ptr-1就是指向整个数组的最后一个元素。
  • *(ptr-1)就是最后一个元素 10

    *(ptr2 - 1)

  • ptr2-1就是第二行第一个元素减一,就是第一行最后一个元素,所以表示的就是元素5   

 

 结论:

  • 在二维数组中,数组名+1 = 数组名[1] 即表示第二行的地址又表示了第二行第一个元素的地址。

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

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

相关文章

Java的锁大全

Java的锁 各种锁的类型 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数…

AMBA总线协议(0)——目录与传送门

一、AMBA总线协议 Arm高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)是一种开放式标准片上互联规范,用于连接和管理片上系统(System on Chip,Soc)中的功能块。 AMBA是一种广泛用于…

跨域知识点+springboot解决跨域

目录 一 跨域简介 二 跨域的三种情况 三 springboot解决跨域案例 一 跨域简介 什么是跨域? 由于浏览器的一些安全性限制,不允许前端页面访问一些协议不同、域名不同、端口号不同的http接口,例如我本地创建一个html,里面写一个a…

什么是代码审计?怎么做?

代码审计是对源代码进行人工或自动化审查,以查找潜在的安全漏洞和隐患。在信息安全测试中,代码审计是非常重要的一环。它主要包括以下几个方面: 1.变量验证:检查代码是否对变量进行验证,防止变量被恶意用户篡改。 2.…

python systemrdl 使用实例

今天来看一个具体实例,上一篇传送门:python SystemRDL 包介绍_Bug_Killer_Master的博客-CSDN博客 通常来说,我们验证过程用到的情况大多都是需要提取reg field的路径以及reset 值等信息,所以比较常见的一种方法就是先把rdl compil…

深入理解python虚拟机:调试器实现原理与源码分析

调试器是一个编程语言非常重要的部分,调试器是一种用于诊断和修复代码错误(或称为 bug)的工具,它允许开发者在程序执行时逐步查看和分析代码的状态和行为,它可以帮助开发者诊断和修复代码错误,理解程序的行…

vue(element ui安装)

目录 一,element ui安装二,main.js三,使用element ui最后 一,element ui安装 先在盘服中找到你创建的node的位置 如有不懂根据可以看看上一章安装node 然后在终端找到 进入这个位置之后就可以安装了 输入npm i element-ui -S这个…

什么是长短时记忆网络(LSTM)

什么是长短时记忆网络(LSTM) RNN有一定的记忆能力,但不幸的是它只能保留短期记忆,在各类任务上表现并不好,那该怎么办? 人们将目光投向了自己,人类的记忆是有取舍的,我们不会记住每时每刻发生的所有事,会…

基于Java+SpringBoot+vue前后端分离高校办公室行政事务管理系统设计实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

奎文区残疾人联合会党组领导侯效刚、刘金玲莅临考察交流

2023年8月15日上午,为进一步提升残疾人精准化服务水平,推动“如康家园”残疾人之家建设有序展开,奎文区残疾人联合会党组书记兼理事长侯效刚,党组成员兼副理事长刘金玲,潍州路街道办事处副主任董江芹主任一行5人莅临潍…

RK3568评估板外接屏幕修改竖屏为横屏显示

问题 使用RK3568评估板外接HDMI屏幕时竖屏显示内容,需要修改为横屏显示。 解决办法 修改weston.ini配置文件,配置output输出参数 查看显示屏名称 使用ls /sys/class/drm/ 命令查看显示屏名称,如下图所示,示例屏为HDMI屏&#xff0…

1448. 统计二叉树中好节点的数目

题目描述: 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例: 解题思路: 通过左右子树分别判断是否大于…

胜券汇:运营商有望引领国内AI信创加速

8月20日,中国电信发布《中国电信AI算力服务器(2023-2024年)会集收购项目会集资历预审公告》。胜券汇研报点评称,中国电信集采4175台AI算力服务器,数量大幅增加,佐证AI服务器高景气量。估计国产占比约47%&am…

【三维重建】【深度学习】NeRF代码Pytorch实现--数据加载(上)

【三维重建】【深度学习】NeRF代码Pytorch实现–数据加载(上) 论文提出了一种5D的神经辐射场来作为复杂场景的隐式表示,称为NeRF,其输⼊稀疏的多⻆度带pose的图像训练得到⼀个神经辐射场模型。简单来说就是通过输入同一场景不同视角下的二维图片和相机位…

抢鲜体验!vLive虚拟直播5大实用新功能上线!

vLive虚拟直播系统2.6.2版本全新上线!新版本一共更新了5项实用功能,能让你的直播操作更加方便。现在就跟随小编一起来看看吧! 1.本地下载场景支持一键迁移 用户下载后的场景可以直接迁移至另一个磁盘,无需重复下载。 2.信号源添加…

《深度学习计算机视觉 》书籍分享(包邮送书三本)

深度学习计算机视觉介绍 随着计算机技术的发展和进步,计算机视觉领域得到了广泛的关注和研究。而深度学习作为一种强大的机器学习方法,已经成为计算机视觉领域的重要工具之一。本文将介绍深度学习在计算机视觉中的应用和取得的成果。 深度学习是一种模…

MeterSphere常用操作/脚本记录

设置变量 vars.put(“key”,“value”); //存为场景变量 设置环境变量 vars.put(${__metersphere_env_id}“key”,“value”); //存为环境变量 随机生成手机号 String phone “178123${__RandomString(5,0123456789)}”; //178123开头,后面5位随机 获取当前请求…

Python爬虫分布式架构 - Redis/RabbitMQ工作流程介绍

在大规模数据采集和处理任务中,使用分布式架构可以提高效率和可扩展性。本文将介绍Python爬虫分布式架构中常用的消息队列工具Redis和RabbitMQ的工作流程,帮助你理解分布式爬虫的原理和应用。 为什么需要分布式架构? 在数据采集任务中&#…

子查询和事务隔离以及用户管理

一、子查询 子查询是另一个语句中的select语句嵌套在另一个select中。注意子查询语法上必须使用()包起来。 嵌套的那个语句返回的结果有可能是: 一个字段,一行记录,一个列或一个表。嵌套的位置 where / having语句里面作为条件使用在from语…

DPLVO

在这篇论文核心: 实现了dso的点线优化框架实现了线特征的参数最小化 点的投影与线的投影 点在相机中是一个射线的投影,线其实是一个平面的投影。在vins等系统中采用逆深度对点特征进行表达,三维点只需要一维度的表达就可以了,大…