C语言指针的教学与实践
2009-03-30姚梦梦
姚梦梦
指针数据类型是C语言课程的重点,使用指针可以通过操作计算机的内存来实现一些特定的功能,可以方便地表达复杂的数据结构,使程序简洁、紧凑和高效。指针数据类型也是C语言课程的难点,它与数据物理存储密切相关,概念较复杂,应用广泛而且涉及的概念多,所以学生较难入门,学习中容易产生畏难情绪。本文对实际教学中的一些策略、方法和思路进行介绍,供C语言教学参考,不妥之处,欢迎指正。
一、仔细规划和控制教学内容,简化、突出基本概念
指针一章的教学内容较多,许多概念只能在今后应用项目中才能深刻体会,课堂教学如果灌输太多内容,学生在较短时间内很难接受那些最基础的内容,学习后容易混淆,又会很快遗忘,相反,如果牢固掌握指针较少的一些基本概念,学生会更容易理解与指针相关的其它内容,所以教学内容不能盲目贪多求全,应当重点突出、有详有略。基于这一思路,为了在较短时间使学生了解、理解并初步掌握指针的一般概念和应用,在考虑了实际应用及对后续课程影响的情况下,我们从实用的角度,结合学生的实际情况,重新调整指针一章的教学内容,目标主要是抓住基本的概念、尽量减少概念的数量,删除一些概念复杂、初学者难掌握且并不常用的内容,如二维数组的地址和指向行数组的指针以及指向函数的指针。
二、抓住重点内容的主线,使概念平滑过渡,以便学生类比掌握
在调整教学内容的基础上,教学中还应当抓住重点内容的主线。经过分析,各章节都可以按照“地址-指针-指针变量-数据访问-指针作为函数参数”这条主线组织教学。使学生的学习建立在前面知识的基础上,以便学习时能够自然过渡。
变量的地址一指向变量的指针一指向变量的指针变量一使用指向变量的指针进行数据访问一指向变量的指针作为函数的参数。授课前可先补充物理存储器的概念(内存,内存地址),介绍高级语言的存储器概念(变量、变量名、变量的地址、变量值),在讲清地址的基础上自然地引入指针、变量的指针和指针变量的概念以及定义、初始化、赋值、引用;然后介绍系统访问变量(内存空间)的两种方式。将指针作为函数参数作为指针简单应用的例子进行介绍,初步体现指针强大的功能,并激发学生学习指针的兴趣,训练学生有意识利用指针解决问题的习惯。让学生了解指针作为参数只是指针的一种应用,简化对基本概念讲述。同样,数组与指针部分的内容也可有一条主线,即一维数组的地址一指向一维数组的指针一指向一维数组的指针变量一使用指向一维数组的指针进行数据的访问一指向一维数组的指针作为函数参数。将字符串指针作为指向一维数组的指针的特例进行介绍。同样按照字符串(字符数组)的地址一指向字符串的指针一指向字符串的指针变量使用指向字符串的指针进行数据的访问一指向字符串的指针作为函数参数。
三、安排相对更多且足够的教学时间
考虑到指针一章的重要地位和教学难度,为加深学生对基本概念理解,应适当安排较多的教学时间,以便讲清、讲透基本内容,精讲例题以及引导学生积极参与。在教学中,我们的策略是始终将基本概念与应用示例紧密结合,由浅入深地、反复地对基本概念进行强化。如果受时间限制,那么宁可抓住一些重要基础,省略一些高级应用的知识点,让学生在作业或上机实践的环节中逐步掌握指针的应用。通过这种教学方法,学生基本能够与教师思路同步,从而参与到课堂教学中来,提高学习效率。
四、注意指针数据类型与一般数据类型的共性,采用类比、对比教学
指针涉及数据的物理存储,概念间接不直观、涉及知识点多,应用灵活且复杂,很容易出错,导致学生掌握困难,学习时容易产生畏难情绪,注意力不集中,甚至放弃学习。在讲授指针基本概念时先简要介绍指针的重要性后,即可转入对指针基本概念的介绍,让学生知道指针就是内存单元的地址,也就是说,要让学生知道指针数据、指针变量和一般数据、变量没有本质区别,只不过指针变量中存放的数据是地址数据而已,实际上指针就是地址。在初步介绍内存、变量、变量名、变量地址、指针、指针变量概念的之后,学生可以了解到指针变量是变量的一种,其定义方式也与一般变量的定义完全相同,随后介绍指针常量的书写和指针变量的定义、初始化以及赋值,最后介绍指针对内存空间的访问。通过例题说明变量(或内存空间)的访问方法,通过变量名或地址,让学生熟悉通过指针访问变量(或内存空间)的方式。在教学中始终贯穿指针数据就是地址数据的概念,对比指针类型和一般数据类型的共性,让学生学习时感到指针数据和一般数据类型一样,并不难学。在指针教学中要特别注意策略,不要刻意强调指针的学习难度,以免使学生产生畏难情绪。
五、多用统一、规范的图示分析问题、解决问题
指针概念比较抽象,在教学中应当注意多用图示分析来解决问题。使用图示可以更加形象地表达问题,但值得注意的是教师应当仔细规划图示的内容,确保使用统一、规范、一致的图示进行教学。规范、一致的图示使学生感到基本概念并不复杂,内容也不多,自己也可以分析。相反,随意的图示容易使学生感到杂乱无章,概念繁多且混乱。所以要让学生习惯绘制规范的图示来解决问题,这对提高学生独立分析、解决问题的能力有很大帮助。例如:①在介绍内存、变量、变量名、变量(内存)地址时就开始使用变量图示,以后涉及这些概念时,反复引用统一的图示进行表达和分析,加深学生对这些补充知识概念的理解。②在介绍指针和函数应用中绘制变量图示使学生更容易明白C函数本质是传值调用,传址只是其中的特例,地址值的传递仍然是单向的,但由于主调函数、被调函数使用同样的内存地址,才实现了在被调函数中可以对主调函数内存空间(或变量)的修改。
六、注意学生反应,合理安排作业和上机实践
在教学中应当更加注意学生反映,教师应多与学生交流,注意控制好教学节奏。例如老师板书程序时让同学也参与其中,引导学生积极参与,提高学生的学习积极性及学习兴趣。指针与其它章节比较,具有较多的概念和内容,学习时容易混淆,所以有必要进行适当的练习,指针教学应当在学完每个知识点后,就安排几个课堂小作业对所学内容加以巩固,作业规模要小且尽量利用学生已经掌握的算法,以便学生能够集中精力,能够在比较轻松的环境中逐步掌握指针的基本概念及应用。除了安排几个随堂小作业之外,还应为学生安排时间进行上机调试、实践,以帮助学生更好地掌握和理解学习内容。