c语言下标法改为指针变量法,C语言指针教学的改革探析.doc

C语言指针教学的改革探析

C语言指针教学的改革探析

摘要:指针是C语言的精华,同时又是重难点。从内存的地址分配和存取原理方面深入分析了指针的概念和实质,并对容易发生的错误进行了分析和总结。将指针设置为独立章节,并且在整个内容体系中偏后。对指针的内容体系设置缺点进行了分析,提出应将指针内容和数据类型、数组、函数等知识点有机结合、贯穿始终的改革措施,从而使学生更好地掌握指针内容和熟练运用指针。

关键词关键词:C语言;指针;数据类型;内存分析;课程内容改革;指针指向

中图分类号:G434

文献标识码:A 文章编号文章编号2014)004016803

作者简介作者简介:冯月华(1981-)女,硕士,定西师范高等专科学校计算机系讲师,研究方向为算法及计算机教学。

0 引言

近年来,C语言已经成为大部分理工科专业的必修课,其目的是培养学生的程序设计能力,进而深入理解计算机工作原理及运行过程,以便今后熟练应用计算机解决本学科的诸多问题。

指针是C语言中的一个重要概念,是C语言的精华,正确、灵活运用指针,可以使程序简洁、紧凑、高效,但是指针的概念比较复杂,使用也十分灵活,因此在学习过程中要理解和掌握它存在一定的难度。本文就是从这一问题出发,先让学生掌握组成原理中内存地址划分和存取原理知识,再运用内存图示,深刻掌握和理解指针的概念和本质。由于指针内容设置偏后和集中讲授带来一些缺点,本文对指针的内容体系设置提出了一些新的调整方案,以期提高指针的教学效果。

1 指针概念及实质

1.1 概念

要理解指针的概念,首先要掌握内存的基本存取原理。冯?诺依曼的“程序存储思想”告诉我们,计算机的本质其实是“程序的机器”,其工作原理就是自动、连续地运行存放在内存中的程序的过程。内存是计算机的记忆设备,可以存放二进制数据,但是内存的空间很大,如2GB的内存存放231×8位的二进制数,可用字节将内存分成231个空间,以字节的整数倍大小给程序和数据分配存放空间。为了数据的正确存取,每个空间必须给一个编号,也就是地址,这样就知道数据到底存放在内存空间的什么位置了,取数时也会从确定的地址找到存放空间而不会发生错误。这就相当于一个宾馆中有许多房间,每个房间都有一个不同的编号一样。

假设程序已定义了3个变量i、j、k,变量有3要素:变量名、变量类型、变量值。变量名实际上是以一个名字代表的一个存储空间,存储空间的大小由其类型决定,例如:

short int i=3;

int j=12;

float k=8.3;

char c1=’a’;

图1 内存地址及内存空间分配

不同的编译环境分配给数据类型的存储空间不同,Visual C++6.0编译系统分配给短整型的存储空间是2个,整型是4个,浮点型也为4个,而double型为8个存储空间,字符在存储器中是用它的ASCII码值来存放的,所以分配了一个存储空间,如图1所示。内存的地址从0开始,依次递增,每个存储空间都唯一对应了一个地址编号。假设1000~1001单元用来存放变量i,其值为3,要注意变量地址和变量值是两个概念,就如同房间的号码和房间住的客人是不一样的;同样的1002~1005存放整型变量j,2002~2005存放浮点型变量k,2006单元存放字符变量c1。

程序执行时,通过变量名i找到存储空间的地址,从中取出存放的变量值。程序经过编译之后将变量转换成变量的地址,对变量值的存取都是通过地址进行的,这种直接按变量名的访问方式称为“直接访问”。

假设将i变量的地址存放在变量A_i的存储空间中,现在A_i中不是存放了一个数据,而是地址,要存取变量i的值时,又多了一种方法,如图2所示,通过变量A_i得到其存储空间地址为3020,在该地址中取出存放的值1000,它不是数据,而是i的地址,通过该地址,再访问内存地址为1000的存储空间,取出其中存放的变量i的值3,像这种访问变量i的方法叫“间接访问”。

这样变量A_i和i之间建立起了一种联系,即通过A_i能知道i的地址,从而找到i的内存单元,如图2中用A_i指向变量i箭头表示这种指向关系。

图2 指针变量指向变量空间关系

由于通过地址能找到对应的存储单元,因此将其地址形象化地称为“指针”。一个变量的地址称为该变量的“指针”,如果有一个变量专门存放其它变量的地址(指针),则它称为“指针变量”,如A_i就是一个指针变量,专门用来存放地址,它的值就是地址,也就是指针。

1.2 指针变量

专门存放指针值的变量就是指针变量,它只能存放指针,也就是说指针变量的值是其它变量存储空间的地址,而不是一般数据。如果说一个指针变量的值是X,也就是说该指针指向了以X为首

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值