版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、语言指针教学方法探讨 文章编号:1962-5913(2008)15-0111-04 摘要:指针是C语言的重点,也是教学难点。本文基于计算机教学实践,分析了边疆学生学习C语言指针过程中存在问题的原因,提出了适用的教学方法,提高学生理解和应用指针的能力,进一步增强教学效果。 关键词:指针;教学现状;教学方法 中图分类号:G642 文献标识码:B 1引言 C语言是程序设计语言中专业性较强的语言1,2,为适应信息化社会对人才培养的要求,我区各高校普遍开设了C语言程序设计这门课。由于我区是少数民族居住区,各高校少数民族学生占较高比列,他们虽然具有一定的汉语水平,但是在学习计算机课程时对专业词语生疏,因此
2、在语言理解方面存在较大困难。指针又是C语言的精华,指针变量提供对内存单元的间接访问方式,不同于以往的直接访问方式。同时,指针数据类型繁多,书写格式相近,使用不当容易引起混乱。这些加大了少数民族学生对指针的理解难度。但是另一方面,利用指针可以对不同数据结构进行快速处理,还可以为函数间各类数据的传递提供简便方法,灵活应用指针,可以编写出简洁、紧凑、高效的程序。指针是教学的重点,学生不仅要理解而且要灵活应用。为了突破教学中的难点,本文先对指针内容和教学现状进行了分析研究,在此基础上提出了适用的教学方法,目的是进一步提高边疆地区C 语言的教学效果。 2指针教学内容和教学现状的分析研究 2.1指针的特点
3、决定学习难度 (1) 概念多,易混淆 在指针章节中,许多概念容易混淆,如变量的指针和指针变量,指针数组和数组指针,指针函数和函数指针等。变量的指针是变量的地址,指针变量是专门存放地址的变量;指针数组是每个元素均为指针变量的数组,而数组指针是指向数组的指针;指针函数是返回值为指针的函数,而函数指针是函数的首地址。微小的差别,却表示不同概念。 (2) 数据类型多 引入指针概念后,可以定义出许多新的数据类型。如:整型指针变量、字符型指针变量、实型指针变量;整型指针数组、字符型指针数组、实型指针数组;指向一维整型数组的数组指针、指向一维字符型数组的数组指针等,并且数组下标值不同或数组维数不同,表示定义
4、了不同的数组指针变量;除此之外,还有指针函数类型和函数指针类型以及指向指针的指针数据类型等。 (3) 语法要求苛刻 指针内容的语法细节要求严格,如:(*p)+和*(p+),p为指针变量,仅括号位置不同,表示不同意义。前者表示p所指向变量的值加1,后者表示先对p的原值进行*运算,然后使p的值改变。 (4) 指针应用灵活 指针应用非常灵活,可以应用于普通变量,数组,字符串,函数等,对所指向的数据进行操作。熟练的编程人员,利用它可以编写出颇具特色、高质量的程序,实现其它高级语言难以实现的功能,但是初学者应用指针十分容易出错。 2.2教学现状 (1) 教学目标 掌握指针类型及其表示方法;应用指针访问数
5、组;应用指针对字符串进行操作;了解指向函数的指针和返回指针值的函数概念;了解指向指针的指针概念。 (2) 教学内容及安排 指针,指针类型,指针变量。具体包括:地址和指针概念;定义、引用指针变量;指针变量作函数参数。 数组与指针。具体包括:应用指针访问一维数组元素;用数组名作为函数参数;了解指针访问多维数组元素等。 字符串与指针。具体包括:字符串表示形式;应用字符串指针作函数参数;应用字符串指针变量实现对字符串操作。 函数与指针。具体包括:函数指针变量的定义和引用;返回指针值的函数的定义和引用。 指向指针的指针概念。 (3) 教学现状分析 目前,大多数高校采用先进的多媒体设备辅助教学,增强了课堂
6、教学的新颖性和生动性,但是教学方式仍局限于传统方式从语法角度按部就班地罗列语法知识,并且多媒体教学过多追求情节和画面,分散了学生的注意力,使学生对指针的理解过于肤浅,作题时不知所措。每学期期末,在对本校非计算机专业学生C语言试卷调查中发现:即使指针试题是判断题或选择题,90%的学生仍会失分。 教学实践证明:对于抽象复杂的指针概念,采用板书的教学方式,教学效果明显高于多媒体。一方面:教师在黑板上书写过程中,学生有充分时间理解和思考;另一方面:教师可以根据学生的反应,灵活调整授课内容或者改变教学方法。以下,根据指针内容概念多,难理解;数据类型多,难区分;语法细节多,使用灵活等特点,本文提出了适用的
7、教学方法。 3指针教学方法探讨 3.1由已知学习未知,进行比较和对照 知识和技能的悉得,除掌握正确方法外,还需要扎实基础,学习C语言也不例外。学生对C语言基础知识掌握的熟练程度,直接影响指针的教学质量。在指针章节中,大部分内容与前面知识有关,在教学过程中,如果忽略概念间的相似点,将耗费学生较多精力学习新内容;如果缺乏概念间的对比,将使学生很难深刻理解所学内容,容易引起混淆。 以学习“指针变量”为例,首先应该清楚“指针变量”也是“变量”,固具有“变量”的特点,如:变量值可以改变;任何变量名必须先定义,后使用;变量名表示一个符号地址等。其次,要明白“指针变量”与“变量”的区别:指针变量的存储单元中
8、,存放的是地址值而非数值。由此“指针变量”与“变量”之间的联系和区别总结如下: (1) 指针变量的值可以改变;不过其值一旦改变,表示指向不同存储单元。 (2) 在引用指针变量之前必须先定义,标识符即为指针变量名;与一般变量的定义不同的是:指针变量的数据类型与它本身没有关系,仅表示它所指向的数据的数据类型;变量名前需加“*”;此外,在引用之前,还必须将相应类型变量的地址先赋给指针变量,以确保指针变量有确切指向,不至于破坏内存中的系统数据。 (3) 虽然指针变量存取的是地址值,但是同一般变量一样,指针变量名也表示一个符号地址,编译时为其分配存储单元。 以下通过表1,对比变量与指针变量的定义和引用形
9、式: 程序1运行时,变量i的内存状态如图1所示: 程序2运行时,变量i和p的内存状态如图2所示: 分析说明:如果把存储单元比喻成房间,则内存地址相当于房号。C语言的内存地址是一个从0 到65535之间的整型值。编译时系统自动为每个变量(包括指针变量)随机分配内存地址。如:程序1中变量i的内存地址是3001;程序2中变量i的内存地址是2301,指针变量p的内存地址是4000。程序2中语句“p=&i;”相当于“p=2301;”,其作用是使p指向了i;语句“*p=20;”相当于“i=20;”,作用是将数值20写入i所在的存储单元。 这种帮助学生充分利用所学知识和经验,理解和掌握新内容的方法,在认知心
10、理学领域称为“正迁移”。文献3提出,在教学过程中,如果能全面了解和准确把握迁移规律,将有效增强学生的认知能力和记忆能力,提高学习成绩。实践证明:新、旧知识之间进行比较和对照(对照显现出相同,比较体现出差异),将有助于学生快速发现迁移规律。如果运用同样的方法,由数组学习指针数组,由函数学习指针函数,由指针变量学习指向指针的指针变量等,那么指针的教学难度将明显降低,学生将快速而有效地掌握更深层次的指针概念。 3.2善于罗列和总结 针对指针概念多、数据类型多,易混淆的特点,在教学过程中,如果善于发现规律,对所学知识进行“罗列和总结”,那么将增强知识结构的系统性和完善性,同时将零碎的知识点串联起来,提
11、高学生的记忆能力和辨别能力,进一步改善教学效果。 以数组与指针为例,学习了指针之后,运用指针法同样可以表示数组元素,且该方法使目标程序占内存少,运行速度更快。但是面对下标法和指针法引出的多种表示形式,初学者往往难以准确区分,使用时容易出错。表2对两种表示数组元素的方法进行了全面总结。 说明:表中a代表数组名,p代表指针变量名,p的初值为a(p所指向的数据的数据类型与a数组元素的数据类型一致)。下标法中ai表示数组元素的值,&ai表示数组元素的地址;指针法中*(p+i) 表示数组元素的值,p+i表示数组元素的地址,这些表示形式学生容易理解。但是,下标法“*(a+i), a+i”和指针法“pi,&
12、pi ”这两种表示形式比较抽象,学生不易理解,需要进行简单推理。观察表2后发现:下标法“*(a+i), a+i”与指针法“*(p+i), p+i”类似,之所以也可以这样表示,原因在于p的初始值为a,则a+i 和p+i都指向a数组第i个元素;指针法“pi,&pi ”与数组法“ai,&ai ”类似,原因在于“ ”是变址运算符,ai表示按a+i计算地址,再取值,而p+i和a+i含意相同,则pi等价于ai。 通过全面的总结和简单推理,初学者将比较容易掌握所有表示方法,并且牢记各种表示形式的真实含义,使用时能轻松驾驭,不致于混淆出错。 理解了指针与一维数组的关系,对于二维数组的表示形式,也可以通过“总结
13、”的方法,加深理解记忆4。如语句:int a34; 定义了一个三行四列的整型二维数组,共十二个元素,见图3 (在内存中,依据按行存放的原则) ,把二维数组a看作是一个特殊的一维数组,它有三个元素:a0,a 1,a 2;每个元素又是一个一维数组,如a 0是四个元素:a 0 0,a0 1,a0 2,a0 3的数组名,以此类推。 根据二维数组的特点,指针分为行指针和列指针,行指针有两种表示形式:“a+i和&ai”。由图3学生很容易理解“a+i”表示行指向的指针,此外“&ai”也表示行指针,原因是:此时ai为一维数组的数组名,表示列指针,而列指针前加上“&”就转换成行指针了。需要强调的是:二维数组的行
14、指针只指向具体的行地址,二维数组的列指针才指向具体的存储单元,按照指针访问方式的不同,对二维数组的数组元素的各种表示形式总结如下(见表3,其中 ): 经过总结,二维数组元素的各种表示形式就容易区分了。 在教学过程中,要善于发现规律,这样才便于从不同角度对指针内容进行总结,发现知识点之间的相关性,将零散的知识串联起来,加深理解和记忆。如:指针章节中,起始至终都贯穿着指针变量,那么从指针变量的主要用途出发进行总结,见表4: 由上表可以看出,指针变量用途广泛:使用指向单变量的指针变量作为函数参数,在主调函数中可以得到多个变化了的值;使用指向数组的指针变量,可以大大提高执行效率;使用指向字符串的指针变
15、量构成指针数组,在处理多个字符串时,可以节省内存空间,也可以提高程序的执行效率;使用指向函数的指针作函数参数,可以使一个通用函数实现专用功能;使用指向指针的指针变量,可以实现变量的二级寻址5。指针变量灵活的使用方式,往往让初学者眩晕。但是从表4指针变量的表示形式这一列中发现,所有指针变量具体应用时,都遵循规律:(1)先定义;(2)再赋值;(3)再引用。通过归纳和总结,学生看到了变化中不变的性质,在具体应用时,才会以不变应万变,降低学习难度。 3.3注意语法细节,勤于上机实践 指针应用灵活,值得注意的语法细节较多,如:p为一个指针变量,p+的含义,已不是简单的将p值加1,而是p+1*d,d=si
16、zeof(p所指向的数据的数据类型)。这些细微之处直接影响学生实际分析程序,理解程序和编写程序的能力。但是,过多拘泥于细节,又会使学生感到枯燥无味。为了促进学生正确掌握语法知识,培养学生实际的编程能力,在整个教学过程中,上机实践必不可少6。具体方案如下: (1) 开设验证性实验。要求学生大量上机,调试教材中现有的程序,弄清语法细节,不断积累经验。 (2)开设设计性实验。教师根据学生的实际情况,指定上机题目,学生在课前设计算法、编写程序,在上机课上对编写的程序进行调试、修改。整个实践环节,遵循循序渐进的原则。教师应该启发学生,如:相同的问题能否采用不同的方法解决?用同一方法能否解决不同问题?等等,不断拓宽和提高学生的编程思维。 总之,C语言是一门实践性很强的课程,只有不断上机摸索,才能熟练掌握并灵活应用。 4总结 C语言是计算机专业和相关专业的一门重要基础课程,指针是C语言的重点,但是因其概念复杂、使用灵活,大多数学生难以掌握。在实际编程过程中,学生更容易出错,而且错误难以发现。这对教师的教学水平提出更高要求,教师不仅要对C语言指针有深刻理解,而且要有丰富的教学经验,激发学生的学习兴趣。经过多年教学实践,本文总结出以上三种有效的教学方法。实践证明:灵活运用这些方法,将有效降低教学难度,并取得理想的教
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年第一学期小学德育工作计划(三篇)
- 社区治安巡逻队工作方案样本(2篇)
- 光伏发电框架协议书可以申请项目补贴
- 供货合同范围内其他服务
- 学校创建“安全文明校园”工作方案范文(2篇)
- 2025年二次培训演讲稿范文(2篇)
- 一线作业人员安全培训工作规定范文(2篇)
- 工业园技防方案(2篇)
- 2025年农科教办公室年末工作总结模版(2篇)
- 2025年公司度安全生产工作总结模版(2篇)
- 慢阻肺GOLD指南解读
- T-BIE 003-2023 通孔回流焊接技术规范
- 口腔颌面外科学 09颞下颌关节疾病
- 台达变频器说明书
- 2023年广东罗浮山旅游集团有限公司招聘笔试题库及答案解析
- DB11-T1835-2021 给水排水管道工程施工技术规程高清最新版
- 解剖篇2-1内脏系统消化呼吸生理学
- 《小学生错别字原因及对策研究(论文)》
- 智慧水库平台建设方案
- 系统性红斑狼疮-第九版内科学
- 粮食平房仓设计规范
评论
0/150
提交评论