深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 54 页 共 83 页
第七单元(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),符合++运算符的规律
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 55 页 共 83 页
(*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中的最大数与最小数输出
实参和形参都用数组名
实参用数组名,形参用指针
实参用指针,形参用数组名
实参和形参都用指针
学生容易出错的地方
指向数组的指针移动后没有重新指向数组头部
对数组名赋值,数组名是常量不能进行赋值
问题与讨论
形参是数组的指针时,实参可以是什么?
数组名和指向数组的指针有什么异同?
小结(可由问题与讨论方式给出)
数组的指针是数组在内存中的起始地址,数组元素的指针是数组元素在内存中的起始地址
数组名是常量,代表数组的起始地址,也就是第一个数组元素的地址
深 圳 职 业 技 术 学 院Shenzhen Polytechnic
计算机系乌云高娃 Wygw@21cn.com 第 56 页 共 83 页
指向数组的指针变量同样要经过定义、赋值才能引用
指向数组的指针变量可以改变本身的值
数组名和指向数组首地址的指针变量作函数参数时,效果是一样的.即实参与形参结合后,形参数组与实参数组占用同一段内存空间,在函数中改变数组会使主函数中的数组发生变化,
课后任务
p.118,11.4