c语言函数指针C语言指针教学中的常见问题及教法探析_第1页
c语言函数指针C语言指针教学中的常见问题及教法探析_第2页
c语言函数指针C语言指针教学中的常见问题及教法探析_第3页
c语言函数指针C语言指针教学中的常见问题及教法探析_第4页
c语言函数指针C语言指针教学中的常见问题及教法探析_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c语言函数指针C语言指针教学中的常见问题及教法探析 摘要:“指针”是C语言中比较难以掌握的一个概念,是学习的难点。该文对C语言指针运用中常见的错误进行了分析,提出了改进教学的方法,提高了学生理解和运用指针的能力。 关键词:C语言;指针;教学方法 : G64:A:1009-3044(xx)17-4168-02 The Frequently Asked Question and Analysis Methods in the C Program Language Pointer Teaching SHI Juan (Qinghai Architectural Vocational and Technical College, Xining 810012, China ) Abstract:“pointer”is a concept which more difficult to grasp in the C Program Language, it is the difficulty of learning. It make a analysis for the C program language pointer to the use of mon errors, and proposed the way of improve teaching methods, and improved the ability of students to understand and use the pointer in this article. Key words: C program language; pointer; teaching methord C语言程序设计是计算机专业的一门专业基础课,目的是培养学生的编程思想,训练学生用计算机语言解决实际问题的能力,为今后进一步深入地学习计算机专业知识打下基础。指针是C语言中的一个重要概念,内容灵活多变不易掌握,是学生学习的一个难点,因此,该文针对指针运用中的常见错误进行了分析,并提出了改进教学的方法,以便学生更好地掌握。 1使用指针时的常见问题 如同其它基本类型的变量一样,指针也是一种变量,但它是一种把内存地址作为其值的变量。因为指针通常包含的是一个拥有具体值的变量的地址,所以它可以间接地引用一个值。利用指针可以使得程序代码书写得更简洁、效率更高,前提是一定熟悉指针的运用,牢牢掌握概念不可滥用,否则不但会降低程序的可读性,严重的情况下还将导致系统崩溃。 下面对指针使用中的常见错误进行总结: 1.1未对指针变量进行初始化 例如:main( ) int a=80,*ps; *ps=a; *ps+=10; printf(“a=%d”,*ps); 本例中存在的错误是没有对指针变量进行初始化。我们知道在指针变量中存放的是指定变量的地址,如果进行初始化,那么这个指针指向的地址是随机的,而不是我们想象的null值。因此有可能让指针ps指向一个“危险”的区域,导致程序发生不可预料的错误,甚至造成系统死机。解决此类问题的方法是让指针指向一个有效的地址。本例应将*ps=a;改为*ps=&a,修改后运行结果为90。 1.2二维数组中指针类型错误 例: main() int a22=1,2,3,4,*p; for(p=a;p printf(“%d”,*p); 上例中定义了一个二维int型数组a,因此a是一个二级int型指针,而a0是一维int型指针,二者指向的对象和类型都不同,虽然a0和a的值相同,p是指向int型数据的一级指针变量,只有接受a0(即&a00),不能接受a。因此本例应该将p =a;改成p=a0;或者p=*(a+0)。 1.3指针移动越界 例:main() char *pa,str80; pa=str; do gets(str); while(*pa) printf“%c”,*pa+); while(strcmp(*pa,“end”); 在这个例子中,指针初始化时指向字符数组str的首地址。执行完while(*pa) printf“%c”,*pa+);指针指向了str的末尾,在外层循环中指针pa是无法预料的,它指向数组str最后一个元素之后,这是错误的。应该在do循环中加入语句pa = str;使指针在自增操作后指向数组的开始位置。 1.4指针与字符串 例: main() char *pa =“c language.”; pa=C; printf(“%s”,pa); 程序中虽然没有定义字符数组,但字符串在内存中是以数组的形式进行存放的,有一个起始地址,并且占用一片连续的空间,以0结束。 char *p =“c language.”;的作用是让指针pa指向字符串的起始地址,因此应将pa=C改为pa0=C。 1.5指针的算术运算 指针变量是有加减运算的,但是要注意以下几点: 1)指针变量中存放的是地址值,也就是一个变量的地址。指针变量可以加减,但是只能与整型数据加减,指针变量“加上”或“减去”一个整数m,相当于指针变量加上或减去m个指针所指向数据的存储单位,即指针由当前指向位置向后或向前移动m个指针所指向数据的存储单位。 加减运算常用于数组的处理。对指向一般数据的指针,加减运算无实际意义。例如; int a10,*ps=a,*x; x=ps+3;*实际上是ps加上3*2(因为int型数据在内存中占2个字节)个字节赋给x,x指向数组的第三个元素* 2)指针之间可以相减,但不可以相加。两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数),一般用于数组处理。例如对于int类型的指针p和p1,p1-p的意义表示他们之间相隔多少个int类型的元素。同样对于其他类型的指针变量之间相减的意义也是一样。指针变量的自加和自减实际上是与整数1的加减运算。 2改进教学方法,提高学习效率 2.1采用板书教学 目前,采用多媒体课件进行教学已经是比较普遍的教学形式了,但是由于C语言指针的概念比较抽象复杂,应用灵活多变,不易掌握,是学生学习的难点,根据以往的教学经验,感觉采用黑板板书的教学方法,教学效果明显好于多媒体。利用板书进行教学,既可以让学生有充分的时间理解和思考所学知识,又可以根据学生的反应灵活调整授课内容,更好地和学生进行交流。 2.2采用“案例教学法” 对于指针这种抽象难懂的概念,如果只是一味地让老师讲学生听,学生处于被动的学习状态,效果是事倍功半的。要改变这种状况就要采用“案例教学法”。老师课前应该根据指针的特点及易出现的错误,设计好案例,上课时和学生一同分析案例,让学生动脑筋进行思考,根据分析结果让学生自己设计解决该案例的程序代码,之后老师在根据学生设计的程序进行分析讲解。这样既充分发挥了学生的主观能动性,使学生独立思考,又能理论联系实际,让学生更灵活地掌握所学知识,提高学习效率。 2.3加强上机实践的力度 C语言的学习过程中,上机操作是必不可少的,只有通过不断的上要摸索,才能灵活运用,激发学习兴趣,更好地掌握和运用指针。 3结束语 C语言的指针使用灵活、执行效率高。如果能够熟练掌握可以利用它编写出执行效率较高的程序,实现其他高级语言难以实现的功能。但对初学者而言,指针往往令人望而生畏,难以掌握。所以,教师一定要针对指针中的常见错误精心设计教学过程,选择学生感兴趣的案例,激发他们的学习热情,这样才能提高学生的编程能力。 _: 1谭浩强.C语言程序设计教程M.2版.北京:清华大学出版社,x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论