首页 理论教育 语言的多级指针案例教学探讨_人才培养与教学改

语言的多级指针案例教学探讨_人才培养与教学改

时间:2022-06-27 理论教育 版权反馈
【摘要】:语言的多级指针案例教学探讨_人才培养与教学改C语言的多级指针案例教学探讨诸葛斌[1] 姚敏辉[2] 邓 丽[3]摘 要:当前理工科诸多专业中,已经广泛开设了高级语言程序设计这门课程,而C语言因其实用性与灵活性,成为该门课程的首选语言,而其中指针是C语言的精华部分和难点部分,也是学好C语言的关键。所以,C语言指针的教学一直是高校计算机教师重点研究的教研课题。

语言的多级指针案例教学探讨_人才培养与教学改

C语言的多级指针案例教学探讨

诸葛斌[1] 姚敏辉[2] 邓 丽[3]

(浙江工商大学信息与电子工程学院)

摘 要:当前理工科诸多专业中,已经广泛开设了高级语言程序设计这门课程,而C语言因其实用性与灵活性,成为该门课程的首选语言,而其中指针是C语言的精华部分和难点部分,也是学好C语言的关键。学生通过学习,一般都能够较好掌握指针变量与基本数据类型变量及一维数组之间的关系,但是对多级指针即指向指针的指针这块,也是指针学习中的难点内容,学生们感到十分困惑。虽然在很多文献中有大量关于指针的教学,但是对多级指针却很少提及。因此,本文主要通过对字典索引表的例子来帮助学生理解多级指针的概念以及应用。在教学实践中,可以利用生活中的例子来讲解难点部分,这将会取得预期的教学目的。

关键词:C语言;数组;多级指针;字典(www.guayunfan.com)

一、前 言

科技日益发展、信息不断创新都与飞速发展的程序设计语言有着密切联系。而C语言的发展在现代科技应用中起到了决定性作用[1]。C语言程序设计这门课已经进入我国高校非计算机专业课堂,但由于其涉及的知识面广,而且在学校里往往又是年轻教师授课,教学经验不够丰富,因此在实际教学过程中往往教学效果不是很理想[2]。

目前,在C语言指针的教学中,有些教师采用的以教师为主的模式,即老师在上面讲课,学生在下面听课。这种模式是传统的教学模式,旨在教学生掌握指针的基础知识和基本运用方法。毫无疑问,这样的模式有其固有的优点。我们必须首先肯定它的价值所在,不能轻易抛弃,但同时也必须看到这种模式的局限性。教师在采用此模式教学时,没有很好地与学生进行互动,通常所教知识比较死板,学生听课也就没有什么积极性,缺少了学生独立思考、提问的机会,走入了“满堂灌”的误区。这直接导致学生以记忆、练习为主的单一学习方法的产生,不利于学生全面素质的培养[3]。如果教师能够在“传授式”教学的基础上注意调动学生的学习主动性,多利用生活中的例子来讲解难点知识使学生能够结合生活来理解定能达到事半功倍的效果。同时,精心巧妙地设计问题,充分利用比喻和类比,启发他们积极思维,把单纯的传授知识变为开拓学生的思维,挖掘学生的潜力,激励学生勇于创新,在一定程度上就可以弥补“传授式”的缺点,实现教学模式从单一化向多元化的发展。基于此,教师的角色要发生转换,变过去的主讲、填鸭为现在的引导、启发,言简意赅地描述自己的思想、思路,让学生领悟、理解、接受,并变为自己的思想。同时,让学生充分参与到课堂教学中来,变“一言堂”为“群言堂”,积极开展课堂讨论,使学生在不知不觉中也变换着自己的角色,变“要我学”为“我要学”。利用“启发式”教学可以培养学生在程序设计方面的发散思维,提高程序设计中的应变能力。问题是活的,但程序设计的思想总是有章可循的,要启发学生善于在已经解决问题的基础上“引申”与扩展,借此解决相关联的问题。所以,C语言指针的教学一直是高校计算机教师重点研究的教研课题。

虽然在很多文献中都有大量涉及指针的理解,但对于多级指针的描述相对较少。往往浅谈指针数组和字符串与数组的关系,对多级指针一带而过,没有很好的例子来帮助学生深刻理解。在此,本文主要针对多级指针进行讲解,并利用一个通俗易懂的例子来帮助同学们理解多级指针的概念。

本文通过对字典索引表的例子来说明多级指针的含义及用法。在教学过程中,应该采用循序渐进、先易后难的方式指导学生进行c语言的学习。在教学实践中,可结合启发式教学法实施该教学设计,将会取得预期的教学效果,达到预期的教学目的。

二、多级指针教学现状

先看一个多级指针的例子,如图1所示,这是一个运用指针数组处理二维数组的例子,在这个函数中,main()函数执行的过程中,先给二维数组赋值,然后将二维数组两行的首地址b[0],b[1]分别赋值给指针数组pb[0]和pb[1],指针数组就是指向指针的指针,然后,将二级指针中的内容打印出来。

图1 指针数组处理二维数组示意图

文献[4]是介绍“C++”的著名教材,在这本书里,作者用两个例子完成了“多级指针”的介绍:第一个例子是“指针数组”,第二个例子是“指向该数组元素的指针”,即“指向指针的指针”。文献[5]将二重指针分别和变量以及数组结合在一起,讨论了二级指针变量与二级指针数据的用法与区别。除了上述文献之外,还有不少文献讨论C++/C教学法。文献[6]提出了C++/C教学的“指导思想”,“正确处理新理论、新技术与旧内容的关系”等。

文献[7]提出了如下教学方法:采用启发式教学、采用任务驱动教学法、采用“框架法”和“求异法”和采用“多媒体”等。文献[8]结合教学实践,提出了“渐进式教学法”和“启发式教学法”,主张通过“编程”来理解新概念,通过“由易到难”启发学生并引入新概念[9]。

除了上述文献之外,还有不少文献讨论C++/C教学法。在目前的大多数教学法中,在理解多重指针这方面大多采用了直截了当的方法将c语言中多重指针的概念呈现给同学们,导致同学们在理解上感觉难度跨度过大,很难理解。本人在阅读了相关文献之后,感觉以一个更贴近学生切身生活的例子来结合多重指针的例子一起讲解可以让学生更容易掌握多重指针的概念。本文提出了通过《新华字典》查找字过程的例子让同学们更好地理解多重指针的概念。

三、基于字典案例的多级指针教学实践

本文通过字典查找字的例子来帮助学生来理解多级指针的概念。当碰到一个不认识的字的时候,想到的第一个办法就是用《新华字典》来查找它的具体读音和意思,那如何查询一个不认识的字的意思的呢?如图2所示,很简单,只要知道这个字的拼音或者部首,就可以通过字典的索引页查找到这个字的位置,然后就可以翻到那一页,相应的就可以找到那个字的意思了。

那对应到所要讲的多级指针有什么关系呢?其实也很简单,我们已经知道了指针就是变量在内存中的地址。如图2所示,可以把《新华字典》比喻成电脑的内存,页码就是内存的地址,也可以看作变量的指针。《新华字典》通过设计各类索引表让我们快速查找汉字。同样,内存也是存放大量数据的地方,需要通过多级指针设计各类索引表来快速定位查找数据。在字典中,如果知道某个字的页数,就可以翻到那一页,查找到字的意思了。同理在内存中也一样,每一个变量都有一个对应的地址,就相当于字典中的页数,而这个地址就是所说的指针。那么为什么需要多级指针呢?这是为了在大量数据中能更快更有效地查找数据。在《新华字典》中,为了实现快速查找的目的,设计了各类检索表,检索表里放的就是汉字的地址,也就可以对应为多级指针。同样,在内存中指针变量也存放在一个内存中,该内存的地址再放到一个内存中时就是指向指针的指针,也就是今天要引入的重点,二级指针。这就相当于在《新华字典》中索引页,这就是多级指针。即当运用多级指针时,在存取一个变量的具体值时,首先找到这个变量的指针的指针,然后找到这个变量的指针,最后才找到这个变量的值。

图2 字典示意图

举个具体的例子,假如运用部首检索的方法来查找“模”字,首先翻到字典的索引页找到部首索引在P11,然后翻到P11,接着,数一下“木”字有四划,然后,找到四划的部首在P15,接着,数一下剩下的“莫”字有十划,然后,找到十划的在P20,接着找到“模”字在P213,最终,翻到P213找到了“模”字。这个例子可以更生动地帮助更深刻的理解多级指针的概念,让我们来找找其对应关系。《新华字典》就相当于电脑的内存,首先打开的索引页就是多级指针(四级指针),而部首的索引页就是仍是多级指针(三级指针),“木”字旁所在的P15仍是多级指针(二级指针),剩下的“莫”所在的P20是指针,最终的“模”的具体意思就是变量的值。

本文通过大家都熟悉的例子来让同学们理解多重指针的含义,通俗易懂。

四、总 结

目前,有些教师为了学生能更“容易”、更“轻松”地啃下指针这块“硬骨头”,往往采取“填鸭式”的教学方法,教师利用PPT边放边讲,从语法角度按部就班、不分轻重地罗列知识点。然后,针对某些知识点列举几个简单的例程,学生则边听边记笔记。但是,殊不知过细的语法知识却反而容易使学生失去学习兴趣,大量的概念和语句使学生望而生畏。在整个教学过程中,教师始终处于“主体”地位,而学生只能处于“被动”地位。这样的教学安排,学生很快便会感到厌倦,学习热情很难调动起来。学生普遍反映很难理解指针定义的抽象描述,语法知识太多,理解和记忆都不太容易,即使记住了也不一定能灵活应用。很多学生在学习指针后,感觉读程序还勉强,编程则难以下手,甚至在程序设计中回避使用指针。仅仅是为应付考试而死记硬背。结果直到学期结束,学生仍无法领略到指针功能的强大和使用的乐趣。对于此,本文提出的关于字典的例子,让同学们能够在一个轻松的环境中去理解多重指针的含义,例子贴近多重指针的概念,通俗易懂,同学容易理解。

参考文献

[1]陈芸.浅谈基于C的程序设计语言[J].科教文汇,2011(8).

[2]季坤.高校非计算机专业C语言程序设计课程现状及研究[J].考试周刊,2010,41.

[3]王必晴.论c语言指针的启发式教学[J].福建电脑,2010(8).

[4]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.

[5]韩海.关于二级指针的进一步讨论[J].江汉大学学报:自然科学版,2005(1).

[6]秦玉平,马靖善.“C语言程序设计”课程教材建设与教学方法研究[J].计算机教育,2010(4).

[7]杨艳梅,刘心军.C语言程序设计教学探讨[J].信息与电脑:理论版,2011(2).

[8]张伟宏.“C语言程序设计”教学方法探讨[J].科技文汇:下旬刊,2009(11).

[9]黄文晓.C++/C语言的多重指针课堂教学设计[J].中国外资,2012(8).

【注释】

[1]诸葛斌,教授,硕士生导师,研究方向为计算机网络。

[2]姚敏辉,研究方向为计算机网络。

[3]邓丽,研究方向为计算机网络。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈