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

发布时间:2026/6/29 12:54:41
GESP4级C++考试语法知识(二、指针与数组(1、数组与数组名) 第一课神奇的小火车——数组为什么能够找到每一节车厢 本章学习目标学完这一章同学们能够✅ 理解数组为什么连续存放✅ 理解数组名代表什么✅ 理解为什么知道第一节车厢就能找到整列火车✅ 为后面学习指针访问数组做好准备注意这一课几乎不讲指针运算而是先复习连续内存的思想。第一章 故事开始——数据王国来了小火车1、今天老师没有带大家去邮局。也没有去藏宝洞。今天我们来到了一座新的地方——数据火车站这里停着许许多多的小火车。每一列火车都装着很多很多宝物。2、国王说今天我们要学习新的居民——数组Array。国王说大家先把数组这两个字忘掉。今天我们不叫它数组。我们叫它——小火车第二章 一节车厢——普通变量1、以前我们学过int age 10;1汉克老师给大家看这是什么2同学们回答一个变量。3没错我们把它画成一节车厢。┌──────────┐ │ 10 │ └──────────┘4只有一节。里面装着105如果再来一个变量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第一节车厢地址10002第二节10043第三节10084第四节10125第五节10163、于是整列火车可以画成地址 1000 1004 1008 1012 1016 ┌────┬────┬────┬────┬────┐ │10 │20 │30 │40 │50 │ └────┴────┴────┴────┴────┘老师突然停下来。问大家大家有没有发现一个秘密第六章 地址为什么这么整齐1、看看1000 ↓ 1004 ↓ 1008 ↓ 1012 ↓ 1016是不是每次都增加42、为什么因为int通常占4个字节Byte。3、也就是说。每一个整数。都会占四个小房间。4、所以第一节占1000 1001 1002 1003第二节。只能从1004开始。于是第三节就是10085、这里发现数组里的元素一个挨着一个连续存放。这是很重要的。第七章 数组为什么一定连续1、我们举一个生活中的例子。1在电影院。你买了5张连号电影票。2工作人员会给你1号 2号 3号 4号 5号3不会1号 18号 36号 72号4因为大家一起坐。必须连续。2、数组也是一样。它申请的是一大片连续空间。所以所有元素。必须排成一排。第八章 数组名字是谁1、汉克老师写下train2、汉克老师问它是谁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 10167、不用只要知道第一节车厢在哪里。后面全部都能找到。8、所以数组名字train就代表第一节车厢的位置。也就是1000第九章 第一个实验1、来看程序。#include iostream using namespace std; int main() { int train[5]{10,20,30,40,50}; couttrainendl; couttrain[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就能走到第二节车厢我们会继续用小火车的故事把一维数组与指针的关系讲清楚。