圳 职 业 技 术 学 院Shenzhen Polytechnic
七单元(2):指针与数组
教学内容 指针与数组
教学目标
应知 数组的指针的意义,数组元素的指针的意义,数组名作函
数参数
应会 通过指针引用数组元素,数组名与数组的指针作函数参数
难点 指针引用数组时指针的定位
学方法
项目递进驱动教学法,通过数组的几种表示方法引入数组的指针
学过程
1. 提问与复习
what’s a point of a variable?
What’s is the characteristic of the function result when the parameter is
a pointer?
2. 输出数组 int a[10]各元素的值,采用如下三种方法:
下标法(复习数组的定义、引用,数组下标从0 开始) (提问)
数组名寻址法 (引入数组的地址) (学生易错:数组名是一个常量,不能出现在赋
值号的左边)
通过数组名计算数组元素的地址,找出元素的值
指针法 (引入数组的指针) (指向数组的指针是一个变量,可以有运算)
用指针变量指向数组元素
3. 将第2 步数组的输入采用指针实现,再用指针方法输出(观察程序,修改
程序,学生易错:必须明确指针当前所指的元素)
4. 通过实例熟悉指针运算(指向数组的指针变量在使用中要注意):
*p++ 等价于* (p++):符合++运算符的规律
*p++ 与 *(++p) :符合++运算符的规律
算机系乌云高娃 Wygw@21 第 54 页 共 83 页
圳 职 业 技 术 学 院Shenzhen Polytechnic
(*p)++ :p 所指向的元素值加1
p+n ,(p-n):将指针从当前位置前进或后退n 个元素
p2-p1 :表示两指针变量之间数组元素的个数,而不是指针的地址之差
5. 编程训练:通过指向数组的指针,将数组a 中的最大数与最小数输出
定义数组int a[10],指针int *p,存放最大值最小值的变量max 和min
将指针指向该数组,p=a;
从键盘输入数组数据 (采用指针法)
将max 与min 赋值为a[0]
在循环中依次进行比较,将比较大、比较小的元素值存入max,min
输出max 和min ,应为数组a 中的最大值和最小值
6. 编程训练:通过指向数组的指针,将数组a 中的最大数与最小数输出
实参和形参都用数组名
实参用数组名,形参用指针
实参用指针,形参用数组名
实参和形参都用指针
学生容易出错的地方
指向数组的指针移动后没有重新指向数组头部
对数组名赋值,数组名是常量不能进行赋值
问题与讨论
形参是数组的指针时,实参可以是什么?
数组名和指向数组的指针有什么异同?
小结 (可由问题与讨论方式给出)
数组的指针是数组在内存中的起始地址,数组元素的指针是数组元素在内存中的起
始地址
数组名是常量,代表数组的起始地址,也就是第一个数组元素的地址
算机系乌云高娃 Wygw@21 第 55 页 共 83 页
圳 职 业 技 术 学 院Shenzhen Polytechnic
指向数组的指针变量同样要经过定义、赋值才能引用
指向数组的指针变量可以改变本身的值