内容正文:
课题
多角度统计人口增长率
课时
2课时(90 min)
教学目标
知识目标:
(1)掌握指针变量作为函数参数的使用
(2)掌握指针作为函数的返回值的使用
能力目标:
能利用指针编写程序
素质目标:
通过统计人口增长率,理解我国的人口可持续发展战略
教学重难点
教学重点:指针变量作为函数参数,指针作为函数的返回值,指向函数的指针
教学难点:指针作为函数的返回值
教学方法
问答法、讨论法、讲授法、实践法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
课前任务
【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,完成课前任务
请同学们回顾之前函数调用相关知识,明确按值传递与地址传递的区别。
【学生】完成课前任务
考勤
【教师】使用文旌课堂APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】请同学们扫码观看“函数参数的数据类型”视频(详见教材),讨论并回答以下问题:
哪些数据类型可以作为函数参数?哪些数据类型作为函数参数时,实参与形参的传递方式是“地址传递”?
【学生】思考、举手回答
传授新知
【教师】讲解指针变量作为函数参数,指针作为函数的返回值,指向函数的指针
一、指针变量作为函数参数
✈【教师】多媒体观看“指针变量作为函数参数”视频(详见教材),让学生了解指针变量作为参数时的作用和使用方法
指针变量作为函数的参数时,其作用是将一个变量的地址传送到另一个函数中,即将实参指针指向的地址值传递给对应的形参指针,从而使形参指针和实参指针指向同一个内存地址。
【课堂练习】
✈【教师】出示【例7-4】,组织学生编写代码
利用指针作为函数参数,编写swap( )函数交换两个变量的值。
✈【学生】编写程序、运行、对比结果
✈【教师】解析例题
指针变量作为函数参数时,会将变量的地址传递到被调函数中。由于指针指向的单元和变量对应的单元相同,因此,可以在被调函数中通过指针运算符“*”修改主调函数中的变量值。
……(参考程序详见教材)
【运行结果】程序运行结果如图7-9所示(详见教材)
在该程序中,swap( )函数的形参为指向整型的指针,调用swap( )函数的实参为整型变量的地址。调用swap( )函数时,指针变量p1中存入变量i的地址,指针变量p2中存入变量j的地址,即指针变量p1指向变量i,指针变量p2指向变量j。
【课堂讨论】
✈【教师】请学生分组讨论以下问题
请同学们以小组为单位,讨论上述程序中,定义整型变量t,能否将t修改成指针类型,如果可以,程序如何进行修改?
✈【学生】讨论、总结、回答
✈【教师】总结学生的回答
✈高手点拨
在指针参数传递中,形参和实参共用同一个存储单元,要从被调函数中获得多个值,可用多个指针变量作为函数参数,通过修改指针所指变量的值来返回多个值。
二、指针作为函数的返回值
✈【教师】介绍函数返回值为指针时函数的定义形式,及调用方法
一个函数既可以返回一个基本类型的数据,也可以返回一个指针类型的数据,即地址。将地址作为函数返回值时,该函数被称为指针函数,其定义形式如下。
数据类型 *函数名(形参列表)
{
函数体;
}
其中,函数名前面的“*”表示该函数为指针函数,即返回值类型为指针,数据类型表明指针指向的类型。因此,函数的返回值是一个指向该数据类型的指针。
【课堂练习】
✈【教师】出示【例7-5】,组织学生编写代码
编写一个指针函数求两个一维数组对应元素之和。
✈【学生】编写程序、运行、对比结果
✈【教师】解析例题
使用指针函数求两个一维数组对应元素之和,返回指向数组的指针变量。
……(参考程序详见教材)
【运行结果】程序运行结果如图7-10所示(详见教材)
【课堂问答】
✈【教师】随机邀请学生回答以下问题
请同学们思考,上述程序中,如果数组长度都改成6,程序中需要修改很多地方,将5改成6,如何修改程序避免这种情况的发生?
✈【学生】聆听、思考、回答
✈【教师】总结学生的回答
三、指向函数的指针
✈【教师】介绍函数指针的概念,定义函数指针的方法,引用函数指针的方法
如果程序中定义了一个函数,在编译时,编译系统会为该函数分配一段存储空间,这段存储空间的起始地址称为入口地址。当调用该函数时,系统会从这个入口地址开始执行该函数。存放函数入口地址的指针就是一个指向该函数的指针,简称函数的指针,其定义形式如下
类型标识符 (*指针变量名)(函数参数列表);
例如:
int (*p)(int);
【课堂讨论】
✈【教师】请学生分组讨论以下问题
请同学们以小组为单位,讨论函数指针与返回值为指针的函数有何区别?
✈【学生】讨论、总结、回答
✈【教师】总结学生的回答
✈提示
在C语言中,括号的优先级比*高