指针的深入理解(一)

这一节主要复习数组指针,int (* )[ ] 就是数组指针类型的标志。

因为有()将*括起来,所以(*)表示一个指针。[ ] 表示数组,所以(*)[  ]就表示一个指向数组的指针, int是数据的类型。所以int (*) [  ]表示指向一个数组的指针,元素类型是int, 个数是[  ]里面的数。

数组指针和二维数组联系

数组指针经常和二维数组连用,二维数组传参,传送的是首元素的地址,但是对于二维数组来说,其实第二个方块才是元素个数,比如

int arr[3][5] = { 0 };

对于arr[3][5]来说,arr[3]是一个元素, 5是元素的个数。所以,二维数组的首元素地址其实是arr[3]这个一维数组的地址,那么就需要使用数组指针接收。

如图:

数组指针和二级指针的区别

 对于一个数组指针,想要确定访问一个确定的元素,那么就需要进行两次解引用,有点类似于二级指针,但是本质是不同的。接下来看一下数组指针如何进行访问

 由于数组指针解引用的方式和二级指针有点类似,这里看一下二级指针如何进行解引用:

 二级指针和数组指针在运用时有点类似,但是其本质截然不同,下面为内存存放本质:

 

 二位数组在内存中存放的方式其实并不是一个3 * 4二维平面,其实内存是一个个连续的内存单元。所以其又可以表示成这样:

所以在数组指针的两次解引用我们可以看到,第一次解引用控制的是行,第二次解引用控制的是列。

下面来看二级指针:

在这里,arr1是一个数组, arr2是一个数组, arr3是一个数组。是不连续的。

parr是一个一级指针数组, 里面有三个元素。 里面的每一个元素分别指向一个数组的首地址。而pparr是一个二级指针, 指向的是parr这个一级指针数组。 

通过指针的偏移以及第一次解引用来确定访问一级指针数组里面的第几个元素。假如要访问parr数组里面的第二个元素, 就要偏移一个单位, 然后进行解引用。即 :*( pparr + 1), 这样即访问到了parr数组中的第一个元素。

即这样:

这样就拿到了parr【1】 

此时parr[1]指向的是arr2数组, 然后通过偏移量解引用就可以访问arr2中的元素。通过指针的偏移以及第二次解引用访问arr2中的元素。比如想要访问arr2数组的第二个元素, 即一个偏移量。

即 *(*(pparr + 1) + 1);

如图:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARP 地址解析协议

目录 ARP(Address Resolution Protocol) 地址解析协议 ARP 的作用 ARP 高速缓存 (ARP cache) ARP 工作过程 ARP 查找 IP 地址对应的 MAC地址 ARP 高速缓存的作用 不在同一局域网的两个主机运行ARP协议 使用 ARP 的四种典型情况 为什么要使用两种…

非遗拓印为山区老人送去爱的礼物

非遗年画是中国的传统艺术,年画反映了中国自古以来的风俗和信仰,寄托着人们对未来的希望,2024年1月27日,100位志愿者齐聚大坪大融城,学习制作非遗年画,为给山区老人捐赠新年“爱的礼物”。 本次活动由大坪…

项目实现网页分享QQ空间功能

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供“点击转发按钮&#x…

【qt】switchBtn

方法1 在qtdesigner中设置按钮图标的三个属性,normal off 、normal on和checkabletrue。 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5 import uic from switchBtn import Ui_Dialogclass Test(QDialog, Ui_…

Deepin基本环境查看(七)【任务管理器和进程管理】

Deepin基本环境查看 - 目录Deepin基本环境查看(一)【基本信息】Deepin基本环境查看(二)【内存】Deepin基本环境查看(三)【网络信息】Deepin基本环境查看(四)【硬盘/分区、文件系统、…

数据脱敏实现:“想在哪脱就在哪脱,想脱谁就脱谁! ! !“

1.背景 在当下互联网高速发展的时代下,涉及到用户的隐私数据安全越发重要,一旦泄露将造成不可估量的后果。所以现在的业务系统开发中都会对用户隐私数据加密之后存储落库,同时还要求后端返回数据给前台之前进行数据脱敏。所谓脱敏处理其实就…

Virtual Assistant for Smartphone;Denoising Autoencoder;CrossMAE

本文首发于公众号:机器感知 Virtual Assistant for Smartphone;Denoising Autoencoder;CrossMAE The Case for Co-Designing Model Architectures with Hardware While GPUs are responsible for training the vast majority of state-of-t…

探索比特币的区块和交易体结构

一、区块结构 Block #476060 一个高度为476060的块,区块高度从 1 开始,依次累加 Number Of Transactions 1757 表示这个区块中的交易记录总数 Output Total 14663.80477993 BTC 本区块的输出总金额 Estimate…

arcgis 批量删除字段

一、打开ArcToolbox-数据管理工具-字段-删除字段。 二、在输入表中选择要删除字段的要素,在删除字段栏中选择要删除的字段,点击确认即可。

Swift 周报 第四十六期

文章目录 前言卖不动了?iPhone 15 系列跌破 5000 元大关StoreKit 和审核指南更新将你的 App 提交到 Apple Vision Pro 的 App Store 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第四十六期,每个模块已初步成…

抖音信息流广告怎么设置加粉回传?-数灵通

在数字化营销的今天,企业微信已成为了企业与客户间的重要桥梁。而抖音信息流广告,作为一种高效的引流方式,能帮助企业迅速找到目标客户。那么,如何通过设置加粉回传,快速捕获需求客户呢?接下来,…

Element table组件内容\n换行

漂亮的页面总是让人心旷神怡,层次清晰的页面让用户操作起来也是易于上手及展示。 如下的页面展示就是非常low的:用户根本阅读其中的数据。 在这个页面,根据用户填写过程生成多次填写记录,如果不进行层次性的展示,数据…