当前位置: 首页 > news >正文

GESP4级C++考试语法知识(二、指针与数组(3、二维数组与指针)

第三课 《两层小火车站——二维数组与指针》


🎯 本章学习目标

学完本章,同学们能够:

✅ 理解二维数组为什么也是连续存放

✅ 理解二维数组名字表示什么

✅ 理解为什么map表示第一行

✅ 理解map+1

✅ 理解*(map+1)

✅ 理解

map[i][j]

为什么可以写成

*(*(map+i)+j)

并且真正理解整个寻找过程。


第一章 数据王国建了一座火车总站

1、上一章,我们认识的是:

🚂 一列小火车。

int train[5];

只有:

一排。


2、今天。

数据王国越来越繁荣。

(1)国王说:

一列火车已经不够用了。


(2)于是。

建了一座:

🚉火车总站!


3、这里有很多站台。

(1)每个站台。

都停着一列小火车。


(2)例如:

int station[2][3]= { {1,2,3}, {4,5,6} };

4、汉克老师说:

(1)今天不要看代码。

先看车站。

🚉 火车总站 第一站台 🚂 1 2 3 第二站台 🚂 4 5 6

(2)汉克老师问:

有几个站台?

同学们回答:

两个!


(3)每个站台有几节车厢?

三个!


(4)所以:

二维数组。

其实可以理解成:

很多行小火车组成的大车站。


第二章 原来整个车站还是连续的!


1、很多同学第一次都会认为:

第一行放在这里。

第二行放在另外一个地方。

其实不是!


2、汉克老师画出内存的分步。

(1)假设:

地址 1000 1004 1008 1012 1016 1020

(2)排列是:

地址 1000 1004 1008 1012 1016 1020 ┌────┬────┬────┬────┬────┬────┐ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ └────┴────┴────┴────┴────┴────┘

(3)同学们问:

(1)咦?

怎么没有分成两排?


(2)因为:

计算机里面。

根本没有真正的:

第一排。

第二排。


(3)它只有:

一大片连续内存。


(4)只是为了方便阅读。

我们把它画成:

第一站台 1 2 3 第二站台 4 5 6

3、汉克老师笑着说:

二维数组在内存里依然是连续存放的!

这是大家需要牢记的事。


第三章 map 到底是谁?

1、汉克老师写:

station

问:

它是谁?


2、有的同学说:

整个二维数组。


3、没错。

但是。

对于指针来说。

它还有一个身份。


4、汉克老师重新画图。

🚉总站 第一站台 1 2 3 第二站台 4 5 6

5、汉克老师说:

如果邮递员第一次来到车站。

是不是先找到:

第一站台?


(1)所以。

station ↓ 第一站台

不是:

数字1。

而是:

整整第一行!


(2)汉克老师强调说:

这是二维数组和一维数组最大的区别。


第四章 map+1 到哪里去了?

1、汉克老师继续。

如果:

station

表示:

第一站台。


2、那么:

station+1

是不是:

第二站台?


3、画图。

🚉总站 第一站台 🚂1 2 3 ↑ station

然后:

station+1 ↓ 第二站台 🚂4 5 6

是不是和上一章:

p+1

完全一样?


4、只不过。

(1)上一章一维数组。

移动的是:

一个元素。


(2)今天二维数组。

移动的是:

一整行。


(3)汉克老师再次强调:

二维数组每移动一次,是跳过一整行。


第五章 为什么不是1004?

1、有的同学这里还是会疑惑。

汉克老师。

第一行不是:

1000

吗?

为什么:

station+1

不是:

1004

2、汉克老师重新画图。

第一行 1 2 3

(1)其实占了:

三个int。


(2)也就是:

1000 1004 1008

(3)所以:

第二行。


(4)必须从:

1012

开始。


(5)于是:

station+1 ↓ 1012

3、汉克老师总结:

(1)一维数组指针

一次走:

一个元素。


(2)二维数组指针

一次走:

一整行。


第六章 第一颗星号出现了

1、汉克老师写:

*(station+1)

(1)问:

什么意思?


(2)大家不要急。

先拆开。

第一步。

station+1

(3)来到:

第二站台。

第二站台 🚂4 5 6

(4)第二步。

前面的:

*

(5)表示:

打开。


(6)于是。

得到:

第二行。


也就是:

4 5 6

(7)老师说:

注意!

这里。

得到的:

不是数字4。

而是:

第二行。

很多同学都会弄错。


第七章 第二颗星号出现了

1、老师继续。

如果:

*(station+1)

到了:

第二行。


2、那么:

如果想找到:

数字5。

怎么办?


3、邮递员继续走。

写:

*(station+1)+1

大家分析。

先得到:

第二行。


4、然后:

向后走一格。

于是:

来到:

5

但是。

这时候。

还没有打开车厢。


5、所以。

再来一个:

*

最终:

*(*(station+1)+1)

就是:

5

6、老师画完整路线。

station ↓ 第一站台 ↓ +1 ↓ 第二站台 ↓ * ↓ 第二行开始 ↓ +1 ↓ 数字5位置 ↓ * ↓ 5

同学们看到这里。

恍然大悟。


第八章 神奇的公式

1、汉克老师写两句代码。

station[1][2]

还有:

*(*(station+1)+2)

老师问:

它们一样吗?


答案:

完全一样!


2、我们分析。

station ↓ 第一行 ↓ +1 ↓ 第二行 ↓ * ↓ 第二行开始 ↓ +2 ↓ 第三个数字 ↓ * ↓ 6

所以:

station[1][2] = 6

而:

*(*(station+1)+2) = 6

完全相同!


第九章 一张总图彻底理解

station │ ▼ 第一站台(第一行) 1 2 3 ▲ * │ +1 ▼ 第二站台(第二行) 4 5 6 ▲ * +2 ▼ 6

1、汉克老师说:

(1)以后。

看到:

两颗星号。

不要害怕。


(2)它们只是:

第一次:

找到这一行。

第二次:

打开这一格。


第十章 一维数组与二维数组到底有什么不同?

给大家一张总结表。

内容一维数组二维数组
数组名表示第一个元素地址第一行地址
+1下一个元素下一行
第一次*得到元素得到一整行
第二次*不需要得到真正元素

汉克老师提醒大家:

很多同学就是因为没有分清"元素"和"一整行",才觉得二维数组指针特别难。


🎮 课堂挑战

已知:

int station[2][3] = { {1,2,3}, {4,5,6} };

请同学们思考:

第一题

station[0][1]

是多少?

答案:

2

第二题

*(*(station+0)+1)

是多少?

答案:

2

第三题

station[1][0]

是多少?

答案:

4

第四题

*(*(station+1)+0)

是多少?

答案:

4

你发现了吗?

数组下标和指针写法,只是两种不同的表达方式,访问的始终是同一个元素。


🌟 本章总结

今天,我们走进了火车总站,发现了二维数组与一维数组最大的区别:

  • 一维数组中,数组名表示第一个元素的地址。

  • 二维数组中,数组名表示第一行的地址。

  • 一维数组每次+1,走到下一个元素。

  • 二维数组每次+1,走到下一行。

  • 一维数组只需要一次*就能取到元素。

  • 二维数组需要两次*:第一次找到这一行,第二次找到这一行中的具体元素。


🌈 本章口诀

一维火车排成行,

车头一指到首厢。

二维车站分站台,

车头先把首行访。

一次加一换新行,

一次星号到行旁。

再走几步再开门,

真正数据眼前藏!


🎯 下一部分预告——《数组王国指针终极挑战》


http://www.jsqmd.com/news/1104096/

相关文章:

  • 值班岗亭测评:日硕科技材质工艺佳但价格高,适合预算足的场所
  • PCL-PEO-PCL 三嵌段共聚物的自组装行为
  • 靠谱的openclaw哪家技术强
  • GPT-5.5 多轮对话中容易陷入死循环,有解决方案吗?防循环死锁实战指南
  • 源码级拆解 MCP 初始化握手:能力协商、协议版本识别与安全校验全流程
  • 价差400倍!词元超市终结AI算力定价乱象
  • 项目分析:优势、挑战与初步步骤
  • 性价比高的无外机厨房空调供应商哪个好
  • 华为云Flexus+DeepSeek征文|Flexus X 实例一键部署 Dify + DeepSeek,搭建企业级知识库问答助手
  • 薄膜沉积CVD/PVD/ALD怎么选:一文看懂适用场景
  • 该原标题存在营销诱导词,不符合要求,若按照关键词“重罪辩护”生成趋势洞察型标题,可改为:2026年重罪辩护行业趋势洞察:策略与挑战并存
  • BIMBase 数据直达 CesiumLab 与 CIMRTS:纹理和属性,不必再二选一
  • 山东性价比高的网上阅卷厂家
  • 5分钟搞定缠论分析:ChanlunX让通达信自动识别笔、段、中枢
  • 【Claude】成本控制与用量监控实战 — 已解决
  • 68_Python生成器与迭代器
  • 【Java】Java永久代:从诞生到终结的演进史
  • 告别网络依赖:如何用哔咔漫画下载器打造个人离线漫画图书馆
  • 交易所搭建教程详细/开源源码搭建
  • 2026最新AI论文工具全解析,从新手到高手的进阶必备攻略
  • 2026母婴产品深度测评:呼伦贝尔黄金A2奶源奶粉甄选与品质解析
  • skynet 支持 sha256
  • 漳州某综合楼结构健康自动化监测项目
  • 专业人士力荐!2026年7款AI论文软件深度评测,助力顺利毕业
  • YimMenu终极指南:GTA5免费增强菜单与安全防护完全教程
  • MAA明日方舟助手:5分钟教你告别手动刷图,开启全自动游戏体验
  • Windows音频路由终极方案:轻松实现专业级音频管理
  • AD74413R与TM4C123GH6PZ的高精度ADC/DAC同步方案
  • 2026年无外机厨房空调大比拼:哪款技术更胜一筹?
  • 别小看小摄像头,Windows Hello 红外才是 PC 安全守门员