鱼C论坛

 找回密码
 立即注册
查看: 2776|回复: 4

[已解决]哪位大佬帮忙解释一下

[复制链接]
发表于 2023-7-25 15:53:06 | 显示全部楼层    本楼为最佳答案   
在这段代码中,主要的核心是理解如何用指针访问数组。

首先,定义了一个包含9个整数的数组array,并且我们填充了这个数组。接下来,我们创建了一个指向整数数组的指针p,并且我们将这个指针指向了array的地址。

这个指针p被声明为一个指向3个整数的数组的指针。因此,当我们通过p来访问数组元素时,p[0],p[1],p[2]等都是指向包含3个整数的数组的指针。这就是为什么我们可以通过p[2][2]来访问数组的第9个元素。

在C语言中,数组是连续的内存块。在这个例子中,我们可以将数组array想象为一个3x3的矩阵。所以,当我们用p[2][2]访问时,其实是在访问矩阵的第3行第3列的元素,也就是数组的第9个元素。因此,这段代码的输出将会是9。

以下是这个内存布局的一个可视化表示:

  1. array: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
  2.        ·--------------------------------
  3. p:     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
  4.        ·--------------------------------
  5.        | 0,0 | 0,1 | 0,2 | 1,0 | 1,1 | 1,2 | 2,0 | 2,1 | 2,2 |
复制代码


在这个表示中,p[0][0]对应于数组的第一个元素,p[0][1]对应于数组的第二个元素,以此类推。因此,p[2][2]就对应于数组的第九个元素。

因此,这段代码将会输出9。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-11 03:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表