C语言程序_指针算法分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011年4月

第14卷·第2期宿州教育学院学报(下转第156页)

*[收稿日期]2011-3-21

[作者简介]丁四成(1968—),男,汉族,安徽省宿州市人,安徽宿州技师学院教师;主要从事计算机和会计电算化教学工作。

C 语言是目前世界上使用最为广泛的计算机语言

之一,目前已经成为各大高校主要的计算机教学语言。指针算法是C 语言中的一个非常重要的概念,由于指针算法概念比较复杂,运用非常灵活,比较难掌握,尤其是对初次涉及计算机语言的学生来说更是如此。本文重点分析C 语言指针算法单元教学中的几个关键点,并探讨C 语言教学中应该注意的一些问题。

指针算法知识单元构成1.1指针算法定义

在计算机内存中,每一个存储单元(通常为1字节)都有一个固定的编号,就像酒店中的房间号码一样,这个编号就称为地址,相当于房间号。在地址所标识的内存单元中存放数据,这就相当于酒店中各个房间里居住的旅客一样。

1.2引用指针算法变量

&和*是C 语言有关指针算法的两个重要运算符,分别是取地址运算符和指针算法运算符。例如:&x 为变量x 的地址,*p 为指针算法变量p 所指向的存储单元。应该注意的是在定义时*只起说明作用,不是运算符。比如下面的语句中:float x=1.5float *P=&x float *P=x 很多同学在这里有些迷惑,到底是第2条语句正确还是第3条语句正确呢?根据指针算法的定义很显然第2条语句是正确的。迷惑的原因就在把*当成了运算符。其实,这里的float*共同来修饰P ,定义一个指向浮点型的指针算法变量,同时要将一个指针算法&x 赋值给P 。

为了方便对存储单元进行控制,我们可以设置某些变量专门存放指针算法,这样的变量称为指针算法变量。在课堂教学中,应注意使学生明白内存单元地

址与内存单元内容这两个概念的区别,很多初学者在

这个概念问题上常常弄混淆。

1.3指针算法与数组

1.3.1指针算法与数组区别。

在C 语言中数组与指针算法的关系非常密切,但它们还是有着本质上的区别。指针算法可以随时指向任意类型的内存单元,它的特征是可变。所以我们常用指针算法来操作动态内存。当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针算法。例如:char x []=chinachar *p=china 上述两个变量的内存布局情况是:数组x 需要在内存中占用6个字节的空间。这段内存区通过数组名x 来标志。指针算法P 则需要4个字节的空间来存放地址,这4个字节用P 来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指。目前这个P 指向某地连续的6个字节即字符串china 。在教学过程中应该注意使学生能够正确认识数组与指针算法的区别,并正确运用它们。

1.3.2数组指针算法。

数组指针算法的实质是指针算法,其定义为:int(*p)[n]表示P 为指向由n 个元素组成的一维数组的指针算法变量。假设对于一个二维数组a[2][3],定义一个指向它的数组指针算法P,程序如下:int a [2][3]={{l,2,3},{4,5,6}}int(*p)[3]P=aprintf(%d,(*p)[1])p++printf(%d,(*p)[1])在该程序中,初始化数组指针算法P 指向数组a 的首地址,即指向二维数组的首行,此时,输出这一行的第1个元素,即(*p)[1]=2接着,P 往下移动一个数组的宽度,即指向二维数组的第二行,输出这一行的第1个元素,即(*p)[1]=5。在C 语言教学中指针算法是难点,C 语言程序—指针算法分析

丁四成

(安徽宿州技师学院

安徽·宿州

234000)

【摘要】指针算法分析是C 语言教学中非常难解的一个知识模块,文章从C 语言指针算法的概念出发,

分析了指针算法教学中的几个关键点问题,对在教学中存在的一些问题进行探讨。

【关键词】C 语言教学要点指针算法

数组

【中图分类号】TP39

【文献标识码】A

【文章编号】1009-8534(2011)02-0140-01

第14卷·第2期

2011年4月宿州教育学院学报

Journal of Suzhou Education Institute

Vol .14,No.2Apr.2011

2011年4月第14卷·第2期宿州教育学院学报

(上接第140页)难就难在指针算法概念抽象,运用灵活。在教学实践中,对于指针算法的知识单元,应注重教会学生把握指针算法实质,对指针算法定义、指针算法数组、数组指针算法、指向指针算法的指针算法等概念要非常熟悉,教会学生使用图表等方法把指针算法的指向和移动情况真实的描绘出来,这样能够更清楚的把握指针算法指向的内存单元。同时,应教会学生区分指针算法数组、数组指针算法、指向指针算法的不同使用场合。数组指针算法适用于列宽确定,行需要动态生成的场合。指针算法数组适用于行数确定,列需要动态生成的场合。指向指针算法的指针算法适用于行列均需要动态生成的场合。这些都应该在教学中向学生讲解清楚,使学生能够正确运用指针算法的各个概念,掌握指针算法的程序设计。对指针算法单元来说,教学中还应该注意指针算法作为函数参数、函数与指针算法、指针算法运算等相关知识点的讲解,这些都是指针算法单元的重要组成部分。

1.3.3指针算法数组。

指针算法数组的实质是数组,其定义为:int*p[n]表示数组P由n个指向整型数据的指针算法元素组成。指针算法数组中的每一个元素都相当于一个指针算法变量,它的值都是地址。用指针算法数组来处理不定长的字符串很方便,例如有几个姓名字符串需要存储在数组中,若用一个二维数组来存储,由于不知道每个字符串长度,只能留出尽可能多的空间,这样往往会浪费很多内存空问,而且对字符串的排序等操作也很麻烦。用指针算法数组来定义时,就不必了解每个字符串的长度,只要用指针算法数组中的元素分别指向它们,不浪费内存空问,而且对字符串排序时,不必改动字符串的位置,只需改变指针算法的指向,从而大大提高程序的效率。这个知识点在教学中应注意使学生区分指针算法数组和数组指针算法两个概念。尤其在定义时要注意书写规范,不能把指针算法数组与数组指针算法的定义混淆。

1.3.4指向指针算法的指针算法。

指向指针算法的指针算法变量的一个定义形式为:char**p表示指针算法变量P指向字符指针算法变量,或者说P所指向的是一个地址。这个地址指向一个字符变量。指向指针算法的指针算法经常用来进行文本的存储,文本的主要特征是具有很强的动态性,一行文本的字符个数或多或少不确定,整个文本所拥有的文本行数也是不确定的。这样的特征决定了用固定的二维数组存放文本行必然有许多限制,缺乏灵活性。这种场合,使用指向指针算法的指针算法有很大的优越性。

C语言中指针算法的单元内较丰富,对于很多初学者来说往往很难在短时间内全部掌握。在教学过程中,教师应尽量多给学生演示指针算法程序,配合一些图表,把指针算法的移动和变化过程完整清晰的表达出来。不宜只让学生死记一些杂乱、分散的细节。

参考文献:

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

[2]张毅坤.C语言程序设计教程[M].西安:西安交通大学出版社,2003.

相互联系,在体操教学中安排各个项目的动作进度时,应考虑到该项教材纵向前后的衔接和各项教材间横向的左右联系。既要注意本项目动作难易的系统性,又要考虑到与其他项目动作技术的相互关系。

由于人的机体具有对运动负荷由不适应到适应再到不适应的规律,所以我们在安排一次课、一个项目、一个动作的负荷量,应是逐步的、有节奏的、不断提高的过程。如果针对某些体操特长生来说,在他们的训练过程中还应注意负荷强度和负荷量的搭配原则,避免运动员过度疲劳。

6、结论与建议

目前,中小学体操教学中存在着多方面的不科学因素,其范围涉及到教学内容的选择、教学方法的运用、师资、教学评价、场地器材等,当前应做的是针对中小学生的生理心理特点,依托体育教育的基本规律,根据体操项目的自身特点,进行一系列的体操教学改革,以便使的学生的身心得到全面地发展。

参考文献:

[1]体育院校成人教育协作组《运动训练学》教材编写组.运动训练学[M].北京:人民体育出版社,2003.

[2]于苏美主编.小学体育与健康课[M].北京:北京体育大学出版社,2004.

[3]体育院校成人教育协作组《体操》教材编写组.体操[M].北京:人民体育出版社,2001.

[4]学生体质健康标准研究课题组.学生体质健康标准(试行方案)解读[M].北京:人民体育出版社2003.

[5]钱建龙主编.体育运动与身心健康[M].武汉大学出版社,2006.

[6]张大均主编.学校心理素质教育概论[M].西南师范大学出版社,2004.

[7]常为来,宫丽娜.浅析青少年生理发育特点与体育教学卫生.淮南职业技术学院学报,2001(1):121-124.

[8]于新黔.青少年生理特点与运动卫生之探讨[J].按摩与引导,2004(4):60-61.

[9]朱家新.少年儿童不同时期的生理特征及其拳击运动的身体训练[J].烟台师范学院学报,2002(18): 63-66.

相关文档
最新文档