C语言指针部分教学心得.doc

上传人:3d66 文档编号:1787068 上传时间:2019-01-07 格式:DOC 页数:7 大小:14.73KB
返回 下载 相关 举报
C语言指针部分教学心得.doc_第1页
第1页 / 共7页
C语言指针部分教学心得.doc_第2页
第2页 / 共7页
C语言指针部分教学心得.doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言指针部分教学心得.doc》由会员分享,可在线阅读,更多相关《C语言指针部分教学心得.doc(7页珍藏版)》请在三一文库上搜索。

1、C语言指针部分教学心得 摘 要:C语言是国内外广泛使用的一种计算机语言,C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。 0 引言 C语言是国内外广泛使用的一种计算机语言,C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言不仅是计算机专业学生的一门重要课程,也是高校中非计算机专业学生学习计算机知识的一门重要课程。 作者的C语言课都是在机房里进行的,学生可以人手一机。在C语言的教学过程中,精讲多练,讲练结合,依据学生的能力,采用

2、以学生为主体逐步引导、启发学生。即教师在课堂上起引导的作用,让学生在机学习,边学边练,不断发现问题,解决问题,循序渐进,逐步提高。这种方法打破了课堂教学和实验教学的严格界线,在C语言的教学实践中取得了良好的效果。 1 指针用法 指针通常指向一片存储空间,而空间可采用静态分配或动态分配。静态分配是指在编写C程序时已确定了存储空间。如使用全局变量,static char asize,则编译器为变量a在程序运行时的数据区内固定分配size字节的空间;如函数内定义一个局部变量charbsize,则在执行函数时,局部变量b在栈上分配size字节的存储空间,函数调用结束时将自动释放局部数组变量b的存储空间

3、。 动态分配是指调用库函数malloc(size)在堆上分配size个字节的连续空间,调用结束后返回一个指向分配好的存储空间的指针,编程时必须考虑到在使用完该存储空间后调用对应的函数free( )来释放掉。 在C编程时,一定要合理使用指针,否则很容易在执行时出现各种错误。以下列出常见的几个错误: (1)在C程序中定义了一个指针变量,但没有对其进行初始化,将该指针变量称为“野指针”。如果此后对该指针变量所指的存储空间进行操作,程序会出现严重的错误,因为,在定义指针变量后,指针变量的值是不确定的,即指针随机指向某个内存地址,此时的指针所指的内存直接赋值操作,将该单元中原有的数据覆盖,使该数据丢失,

4、若指针指向的是系统的数据区中,会导致系统运行的异常甚至死机。因此,C编程时要及时把指针变量赋值,使指针有正确的指向。 (2)如用语句p = malloc(size)来分配空间,应对分配后的参数p进行检查,如p为NULL则表示分配不到存储空间,此时不能对p指向的空间操作;即使为p分配了空间,也要注意对该指针操作时不能超出其空间范围。使用完后,一定要释放该空间,否则可能引起存储空间的耗尽。 (3)栈溢出。栈是在调用一个子函数时用来保存和恢复现场,以及传递参数和存放局部变量,但在执行子函数时,如果其中的局部变量指针出现使用错误,则会发生栈溢出。例如在子函数中,有下列代码: char p8; strc

5、py(p,/Notice: This is a test pro-gram!0); 由于栈中为局部变量p只分配了8个字节空间,而strcpy()函数将覆盖p指向的连续32个字节空间(包括字符串结束符- 0.),可能将栈中存放的函数返回地址等内容重写了,所以子函数执行完后就无法返回到原来的函数继续运行了。 (4)堆溢出。堆的使用与所在运行平台的操作系统和编译器有关,堆溢出也相对复杂。如程序为: char *p; p = (char*)malloc(8); strcpy(p,/No-tice: This is a test program!0); 则执行strcpy()时将覆盖了紧跟在指针p指向的

6、32个字节的内容,引起堆溢出,程序运行无法正确。 (5)void的用法。void在定义某个函数时,表示该函数无返回值,但库函数void malloc(size)除外,它并不表示malloc(size)无返回值5,而表示函数的返回值可以转换成任何类型的地址值(如char *,int *等)。void不能用来定义数值变量,但可以用void来定义指针变量,它的真实含义是可以将任何数据类型的地址赋给指针变量。 (6)区分数组和指针变量在使用过程中的不同,指针可以通过加减数值来移动它所指的位置,如p+=5;而数组名是不能移动的,如char k20; k+;对k的操作是错误的。 (7)指针移动时挪动的位移

7、与指针所定义的类型相关,如a和b定义为:char *a;int *b;后续的语句:a+=10;b+=10;则表示a向后移动了10个字节,而b向后移动了10个整型长度,即40个字节。指针变量在使用时要与定义的类型相一致,char c10;int *d;d=c;此后对d的操作很可能造成混乱。 2 课堂教学中注意培养良好的编程习惯 (1)入门阶段。分析和演示运行简单的C程序,和学生一起对程序进行简单修改,再演示运行,让学生对C程序产生感性的认识,激发学生的学习兴趣和热情。这时需要注意在编写C程序过程中的一些特定格式和语法要求,帮助学生养成良好的编程习惯。 (2)基础阶段。这时的学生应该已经学习了算法

8、、变量、表达式、语句、程序结构等C程序基础知识。这一阶段中,我会经常提出一些简单的问题,放手让学生讨论,逐步深入理解问题,逐步完善流程图,然后把流程图翻译成标准的C程序,并进行试运行和调试。 这一阶段中,可以以教材为线索,扩展介绍C语言的语法知识,但不能停留在语法上,可以根据任务和项目的需要插入介绍一些系统函数,并适时地将所学知识应用到项目和任务当中,让学生学以致用。 (3)综合阶段。为了让学生熟练使用语法知识,还需要布置一些较长的程序让学生阅读分解,尝试修改语句和程序结构。这一阶段中,我会经常提出一些相对复杂的问题,放手让学生讨论,逐步深入理解问题,逐步完善流程图,然后把流程图翻译成标准的C

9、程序,然后对流程图和程序反复并进行修改、运行和调试。 这一阶段中,要鼓励学生大胆创新,创造性的运用书上的知识。同时,和学生强调编程的功夫在编程之外,养成学生良好的编程习惯,为学生以后的发展打下基础。 (4)提升阶段。我会根据不同层次的学生提出不同的设计要求,因材施教,尽量使每一个学生都能将所学到的程序设计方法和相关语法综合应用。同时,告诉学生,要达到能用C语言编写较大的应用程序,并不是仅在一个学期的学习过程中就能完成的,在以后的实践中,要继续学习。 在C语言的教学中,采用适度灵活的教学方法,理论讲授和上机实践紧密结合,语法与实例紧密结合,可以激发学生的学习兴趣,增强学生的求知欲,降低课程难度,会达到良好的教学效果。当然,具体教学方式、方法的选择,不同的老师可以根据实际需要而定。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1