指针初阶(指针与二维数组)

0.二维数组特性

        ①.存储格式

        二维数组,在存储空间内的存储顺序是连续存储,按行优先存。

        假设定义一个2X3的数组,其在存储空间的存储格式如下:

        ②.表示方法

        且二维数组还有一个特性,例如有二维数组 a[3][2] ,那么 a[0] 就代表第一行 a[0][0] 的地址,a[1] 就代表第二行 a[1][0] 的地址。

        既然知道了每行数组的首地址是 a[0] 、a[1] 、a[2],那么表示每一行的后面几个元素就再加一个偏移量。a[0] 表示第一行首个元素的地址,那么在首个地址上加一个偏移量 a[0][1] ,就代表了那一行的后面的元素。

        ③.数组名的含义

        前面说到了,若定义了一个二维数组 int a[3][2] ; 其中 a[0] (即(a + 0))代表第一行的首地址,a[1] (即(a + 1))代表第二行的首地址,a[2]((a + 2)) 代表第三行的首地址;

        可见,对于二维数组来说,a 代表的是该数组的首地址(又称:行指针)其步长为 一行 !

一.用一阶指针表示二维数组

        若定义一个一阶指针,指向数组 a[3][2] ,则该一阶指针是这么表示二维数组的:

其指针 p 的步长为 4个字节 :(int)类型的大小。

        可见,一阶指针和二阶指针的步长是不一样的

三.行指针(数组指针)

1.行指针定义

        定义一个指针,使其指向一个二维数组。

        int (*p)[3] ,其中的 [3] 表示该指针的步长为 3 个 int (一行),则 p 的类型为 int (*)[3]

/* 二维数组 */
int a[2][3];/* 行指针、其中 [3] 代表该指针的步长为(三个int) */
int (*p)[3];    /* 使 p 指向数组 a */
p = a;

2.使用行指针表示数组元素

①.行指针偏移量 - a[][]

a[1] 表示第二行 ,在加一个偏移量 [1] 表示第二行的第二个数据。

    int a[3][2] = {{1,6},{9,12},{61,12}};int (*p)[2];p = a;printf("a[1][1]:%d\n",a[1][1]);printf("a[1][1]:%d\n",p[1][1]);

②.行指针降阶 - *(*(a + 1) + 1)

        (1)首先 (a + 1) 表示该二维数组的第二行,在 a 这个二阶指针上 + 1 ,步长为(一行)

        (2)*(a + 1) 表示将该地址降阶为了一阶指针(二阶指针解引用,变为一阶指针)

        (3)*(a + 1) + 1 表示该一阶指针移动一个步长(int),对应了 a[1][1] 的地址

        (4)*(*(a + 1) + 1) 最后将该元素的地址进行解引用,得到数据

    int a[3][2] = {{1,6},{9,12},{61,12}};int (*p)[2];p = a;printf("a[1][1]:%d\n",*(*(a + 1) + 1));printf("a[1][1]:%d\n",*(*(p + 1) + 1));

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

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

相关文章

CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版

CleanClip 是一款专为 Mac 用户设计的强大剪贴板历史管理工具。它能够自动保存您复制的内容,让您轻松访问和管理剪贴板历史记录,大大提高工作效率。 下载地址:CleanClip for Mac v2.2.0 剪贴板历史管理软件正式激活版 主要特点 自动保存剪贴板历史 CleanClip 会自…

SOMEIP_ETS_074: Wrong_Interface_Version

测试目的: 验证当设备(DUT)接收到一个包含错误接口版本的SOME/IP请求时,是否能够返回错误消息或忽略该请求。 描述 本测试用例旨在检查DUT在处理一个echoUINT8方法的SOME/IP消息时,如果消息中包含的接口版本不正确&…

[ACP云计算]易错题(原题)

ECS 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、 21、 22、 23、 24、 25、 26、 27、 28、 29、 30、 31、 32、 33、 34、 35、 36、 37、 对象存储OSS 1、 2、 3、 4、 5、 6、 重点!!&#xff…

javaee、ssm(maven)、springboot(maven)项目目录结构以及编译后文件目录存放路径

javaee项目目录结构: src下的文件或者是源码编译后都会放在WebRoot(项目根目录)文件夹\WebRoot\WEB-INF\classes目录中。 编译后的文件夹目录如下: 以上为普通的javaee项目目录结构,同maven工程目录结构是不一样的。…

Electron 项目实战 03: 实现一个截图功能

实现效果 实现思路 创建两个window,一个叫mainWindow,一个叫cutWindowmainWindow:主界面用来展示截图结果cutWindow:截图窗口,加载截图页面和截图交互逻辑mainWindow 页面点击截图,让cutWIndow 来实现具体…

实习项目|苍穹外卖|day1

碎碎念 眨眼间,留给自己的时间不多了。想要去好的公司实习,现在是八股不会背,算法题全忘,跟了好多教程,也没有能写上简历的项目。因此,我决定用两个月的时间学习两个能够写到简历上的项目(的确…

Android Studio:模拟器页面闪烁,手机模拟器输入画面闪烁 android studio闪屏

主要解决,android studio 启动app测试,输入数据时,手机画面就会闪烁,闪屏 1. 如图所示,依照顺序找到Edit ,并点击Edit 2. 找到Graphics 选择为SoftWare ,并保存修改即可 3. 如果此处不能选择S…

国内AI工具分类大盘点,这些神器你都用过了吗?

AI爆发到现成已经快2年了,基本上我自己也使用了近2年的AI产品。国内、外的AI产品体验了很多。 从最初文本聊天类的gpt、new bing、文心一言、通义千问,到后面绘图类Midjourney、Stable Diffusion、文心一格、通义万相等等。 在这里来分享我自己使用的一…

jmeter连接mysql数据库以及常规用法

1、在jmeter中新建一个测试计划,在测试计划界面中点击浏览,选择连接mysql数据库的jar包 如果没有jar包可以去网上下载,也可以通过如下链接进行下载 链接: https://pan.baidu.com/s/1BI6f19KSzXGlkSOwbnequw 提取码: gn8e 2、然后创建线程组&a…

SpringBoot日常:Spring之@PostConstruct解析

简介 spring的Bean在创建的时候会进行初始化,而初始化过程会解析出PostConstruct注解的方法,并反射调用该方法。 PostConstruct 的使用和特点 只有一个非静态方法能使用此注解;被注解的方法不得有任何参数;被注解的方法返回值必…

npm登录

npm 登录问题 npm login --auth-typelegacy报错 原因 npm源非npm本身源,需要切换: 查看源 nrm ls切换为npm源 nrm use npm重新登录 输入OTP验证后登录成功:

python从入门到精通:数据可视化-图形开发

1、json数据格式 • Json是一种轻量级的数据交互格式,可以按照Json指定的格式去组织和封装数据 • Json本质上是一种带有特殊格式的字符串 主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互&#xf…

【DSP+FPGA】基于2 个TMS320C6678+ XC7VX690T FPGA 的6U VPX 总线架构的高性能实时信号处理平台

6U VPX架构,符合VITA46规范板载 2 个TMS320C6678 多核DSP处理节点板载 1 片 XC7VX690T FPGA处理节点板载 2 个FMC 接口背板之间具有 4 路 x4 高速 GTH 互联,支持RapidIO、PCI ExpressFPGA 与 DSP 之间采用高速Rapid IO互联 基于6U VPX架构的高性能实时信…

BERT:Pre-training of Deep Bidirectional Transformers forLanguage Understanding

个人觉着BERT是一篇读起来很爽的论文 摘要 我们引入了一种新的语言表示模型BERT,它代表Bidirectional Encoder Representations from Transformers。与最近的语言表示模型不同(Peters et al., 2018a;Radford et al., 2018), BER…

组合式API-reactive和ref函数,computed计算属性,watch函数

一.reactive&#xff08;&#xff09;接收一个对象类型的数据&#xff0c;返回一个响应式的对象&#xff1a; <script setup> import {reactive} from vue const state reactive({count:100 }) const setCount () > {state.count } </script> <template>…

书生大模型实战营第三期进阶岛第三课——LMDeploy 量化部署实践

LMDeploy 量化部署实践 任务一&#xff1a;创建虚拟环境创建文件夹LMDEPLOY用于存放课程相关的文件创建模型软连接LMDeploy验证启动模型文件LMDeploy API部署InternLM2.5-1.8b以命令行形式连接API服务器以Gradio网页形式连接API服务器LMDeploy KV量化W4A16 模型量化和部署W4A16…

create-react-app 移除 ESLint 语法检查

ESLint 的作用&#xff1a; ESLint 是一个流行的 JavaScript 代码静态检查工具&#xff0c;旨在帮助开发者识别和修复代码中的问题。以下是关于 ESLint 的一些关键信息&#xff1a; 主要功能&#xff1a; 1.代码风格检查&#xff1a;ESLint 可以检查代码是否符合特定的编码风…

经典算法之链表篇(二)

目录 一&#xff1a;重排链表&#xff08;LeetCode.143&#xff09; 二&#xff1a;删除链表的节点&#xff08;LCR 136. 删除链表的节点&#xff09; 三&#xff1a;K个一组反转链表&#xff08;LeetCode.25&#xff09; 有关经典算法链表的第一篇内容&#xff0c;可以查看我…

ESXi服务器无法安装Windows11:“不符合此版本的Windows所需最低系统要求“

目录 一、问题描述1.使用环境2.问题截图3.问题解析 二、解决方法Ⅰ1.按 ShiftF10 弹出命令提示符2.在弹出的Dos框中输入regedit&#xff0c;回车&#xff0c;进入注册表。3.打开HKEY_LOCAL_MACHINE\SYSTEM\Setup&#xff0c;并新建 LabConfig 的项&#xff0c;在 LabConfig 下创…

使用预训练的 ONNX 格式的 YOLOv8n 模型进行目标检测,并在图像上绘制检测结果

目录 __init__方法&#xff1a; pre_process方法&#xff1a; run方法&#xff1a; filter_boxes方法&#xff1a; view_img方法&#xff1a; __init__方法&#xff1a; 初始化类的实例时&#xff0c;创建一个onnxruntime的推理会话&#xff0c;加载名为yolov8n.onnx的模型…