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

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

第一课:神奇的小火车——数组为什么能够找到每一节车厢?


🎯 本章学习目标

学完这一章,同学们能够:

✅ 理解数组为什么连续存放

✅ 理解数组名代表什么

✅ 理解为什么知道第一节车厢,就能找到整列火车

✅ 为后面学习指针访问数组做好准备

注意:这一课几乎不讲指针运算,而是先复习"连续内存"的思想。


第一章 故事开始——数据王国来了小火车

1、今天,老师没有带大家去邮局。

也没有去藏宝洞。

今天,我们来到了一座新的地方——

🚂数据火车站!

这里停着许许多多的小火车。

每一列火车,都装着很多很多宝物。


2、国王说:

今天,我们要学习新的居民——数组(Array)。

国王说:

大家先把"数组"这两个字忘掉。

今天,我们不叫它数组。

我们叫它——小火车!


第二章 一节车厢——普通变量

1、以前,我们学过:

int age = 10;

(1)汉克老师给大家看:

这是什么?


(2)同学们回答:

一个变量。


(3)没错!

我们把它画成一节车厢。

┌──────────┐ │ 10 │ └──────────┘

(4)只有一节。

里面装着:

10

(5)如果再来一个变量:

int score = 95;

那就是另一节车厢。

┌──────────┐ │ 95 │ └──────────┘

(6)汉克老师问:

这两节车厢一定挨着吗?


(7)同学们回答:

不一定!


(8)实际情况,它们可能距离很远。

例如:

1000号房 ↓ age ...... ...... 5000号房 ↓ score

两个变量之间,

可能隔着很多很多房间。

所以:

普通变量,是不保证连续的。


第三章 五节车厢——数组来了

1、这时候。

火车站开来一辆真正的小火车!

int train[5] = {10,20,30,40,50};

2、汉克老师说:

(1)今天先不看代码,先看火车。

🚂═══════════════════════════ ┌────┬────┬────┬────┬────┐ │10 │20 │30 │40 │50 │ └────┴────┴────┴────┴────┘

(2)汉克老师问:

这列火车有几节车厢?


(3)同学们:

五节!


(4)每节车厢里面装着一个数字:

第一节:

10

第二节:

20

第三节:

30

第四节:

40

第五节:

50

第四章 火车为什么叫数组?

汉克老师说:

为什么它叫数组?

因为:

火车里面不是一个数字。

而是:

很多数字。

并且:

整整齐齐排成一排。

就像:

🚂🚃🚃🚃🚃

所以:

我们把它叫做:

数组。


第五章 每节车厢都有门牌号

1、以前。

汉克老师告诉大家。

每个变量都有地址。


2、数组火车也是一样。

假设:

(1)第一节车厢:

地址:

1000

(2)第二节:

1004

(3)第三节:

1008

(4)第四节:

1012

(5)第五节:

1016

3、于是:

整列火车可以画成:

地址: 1000 1004 1008 1012 1016 ┌────┬────┬────┬────┬────┐ │10 │20 │30 │40 │50 │ └────┴────┴────┴────┴────┘

老师突然停下来。

问大家:

大家有没有发现一个秘密?


第六章 地址为什么这么整齐?

1、看看:

1000 ↓ 1004 ↓ 1008 ↓ 1012 ↓ 1016

是不是每次:

都增加:

4

2、为什么?

因为:

int

通常占:

4个字节(Byte)


3、也就是说。

每一个整数。

都会占四个小房间。


4、所以:

第一节:

占:

1000 1001 1002 1003

第二节。

只能从:

1004

开始。


于是:

第三节:

就是:

1008

5、这里发现:

数组里的元素,一个挨着一个连续存放。

这是很重要的。


第七章 数组为什么一定连续?

1、我们举一个生活中的例子。

(1)在电影院。

你买了:

5张连号电影票。


(2)工作人员会给你:

1号 2号 3号 4号 5号

(3)不会:

1号 18号 36号 72号

(4)因为:

大家一起坐。

必须连续。


2、数组也是一样。

它申请的是:

一大片连续空间。

所以:

所有元素。

必须排成一排。


第八章 数组名字是谁?

1、汉克老师写下:

train

2、汉克老师问:

它是谁?


3、很多同学说:

它是数组。

老师说:

没错。


4、但是。

今天我们换一个角度。

我们看看:

它到底站在哪里。


5、假设:

int train[5]={10,20,30,40,50};

内存:

1000 1004 1008 1012 1016 ┌────┬────┬────┬────┬────┐ │10 │20 │30 │40 │50 │ └────┴────┴────┴────┴────┘

6、汉克老师问:

如果邮递员想找到整列火车。

最少需要知道什么?

是需要:

全部所有地址吗?

1000 1004 1008 1012 1016

7、不用!

只要知道:

第一节车厢在哪里。

后面:

全部都能找到。


8、所以:

数组名字:

train

就代表:

第一节车厢的位置。

也就是:

1000

第九章 第一个实验

1、来看程序。

#include <iostream> using namespace std; int main() { int train[5]={10,20,30,40,50}; cout<<train<<endl; cout<<&train[0]<<endl; return 0; }

2、运行后。

可能看到:

0x61FF00 0x61FF00

咦?

为什么一样?


3、因为:

train

表示:

第一节车厢地址。

而:

&train[0]

也表示:

第一节车厢地址。

当然一样!


第十章 千万不要记错

1、汉克老师告诉大家。

有的人都会说:

数组就是指针。

这是不准确的!


2、正确的说法应该是:

数组名在很多情况下,会自动转换成首元素的地址。

也就是说:

对于

int train[5];

我们可以把:

train

理解成:

&train[0]

3、但是:

数组和指针并不是同一个东西。

后面的课程,我们还会证明它们有很多不同。

所以,现在先记住一句最重要的话:

数组名可以表示首元素的地址,但数组本身不是指针。


🎮 课堂小游戏

汉克老师问:

下面哪一句表示第一节车厢的地址?

train

&train[0]

它们都可以

答案:

因为:

train

&train[0]

在这里表示同一个地址。


🌟 本章总结

今天,我们没有学习新的运算符。

却建立了一个非常重要的思想:

1、普通变量

像一间房子。

位置可能到处都是。

age ...... score ...... money

不保证连续。


2、数组

像一列小火车。

🚂🚃🚃🚃🚃

所有元素:

连续存放。


3、数组名

就像火车头的位置。

知道了火车头在哪里。

整列火车都能找到。

所以:

train

通常表示:

&train[0]

也就是:

第一节车厢(首元素)的地址。


🌈 本章口诀

一辆火车排成排,

车厢之间紧挨挨。

数组元素连续放,

地址不会乱跑开。

火车名字记心怀,

首节车厢它来猜。

知道车头在哪里,

整列火车都能来!


🚀 下一章预告

下一章,我们真正让邮递员(指针)坐上小火车

同学们会学到:

int train[5] = {10,20,30,40,50}; int *p = train;

为什么这句代码可以成立?

为什么:

*p

就是第一节车厢?

为什么:

p + 1

就能走到第二节车厢?

我们会继续用"小火车"的故事,把一维数组与指针的关系讲清楚。


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

相关文章:

  • 终极NucleusCoop分屏游戏完整指南:5个最常见问题与解决方案
  • 如何用Python自动化网易云音乐听歌:每天300首轻松冲级LV10的完整方案
  • TAS5414C/TAS5424C D类功放评估模块:硬件连接、软件调试与实战指南
  • Java Web安全实战:从反编译审计到XXE与反序列化漏洞利用
  • 夸克网盘自动转存:告别手动操作,打造智能追剧与资源管理新体验
  • 5个高效解决方案:让你的NucleusCoop分屏游戏体验完美无瑕
  • 3步找回丢失的微信聊天记录:WechatDecrypt解密工具详解
  • Android系统定制:禁用常规入口并设计计算器暗码激活开发者模式
  • LabVIEW与单片机通信:如何精准提取与重组带帧结构的字节流
  • 游戏行业最好的 AI 编程大模型
  • 3个关键问题:Windows用户如何获得完整的AirPods体验?终极解决方案来了
  • 原神自动脚本终极指南:如何用智能工具解放你的提瓦特冒险
  • CrowdSec实战:基于行为分析的动态安全防护与自动化攻击拦截
  • 3天从零到精通:diff-pdf PDF差异对比完整指南
  • 5分钟掌握ExifToolGui:免费开源的照片元数据管理终极指南
  • 3分钟掌握image2cpp:让OLED图像转换变得简单的终极免费指南
  • 如何高效使用网盘直链下载助手:新手完整操作手册
  • Ubuntu 20.04.6 实战:从零到一部署 Basilisk 流体模拟环境
  • Ai2Psd:实现Adobe Illustrator到Photoshop无损图层转换的专业解决方案
  • PIDtoolbox深度解析:从黑盒日志到精准控制优化的完整实战指南
  • 京东抢购助手:3分钟快速上手,告别手动抢购烦恼
  • 【信息科学与工程学】信息科学领域——第一百三十五篇 射频/天线05
  • Rusted PackFile Manager:三大性能突破重塑全面战争MOD开发效率革命
  • 虚拟化平台与邮件网关安全:漏洞链攻击与纵深防御实战
  • Calibre PEX提取寄生参数时引脚丢失的排查与修复指南
  • 3步解锁RPG Maker MV/MZ游戏资源:纯前端解密工具完全指南
  • 终极Mac鼠标优化指南:如何让10美元鼠标超越苹果触控板体验
  • 做iOS批量上架应用你应该收藏的工具箱
  • 突破像素边界:深度解析 WiFi 感知技术 Supertonic 的原理与实战
  • VoiceFixer终极指南:3分钟让模糊语音重获新生的免费AI工具