- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中指针教学的难点突破.doc
C语言中指针教学的难点突破
摘 要:C语言所提供的数据类型非常丰富;指针是其中一个重要的数据类型,指针是C语言的一个特色,也是C语言的一个难点所在。利用指针可以直接寻址内存,快速处理内存中的数据,还可以用于函数间的调用时的地址传递等。但是由于指针概念十分复杂,使用极其灵活,因此对于大一的学生,首次学习程序语言设计,在学习指针这一数据类型时往往难以掌握。所以在教学中,教师需要根据学生的实际情况科学合理地安排这一章的教学,一般可以按照数据在内存中的存储方式来进行教学设计,以帮助学生更加容易地理解指针的概念,进而熟练掌握指针的应用与编程。
关键词:指针 难点教学 内存 程序设计
一、指针的概念
首先要使学生明白指针也是C语言中的一种数据类型。为了使学生能很好的明白指针到底是一种什么样的数据类型,就必须使学生明白数据在内存中是如何储存的。内存是一个很大存储空间,每个存储单元以字节为单位,为了方便查找数据,每一个字节单元都有一个唯一的存储单元的编号,这个存储单元的编号就叫做内存单元的地址,简称地址。可以举个形象的例子,如学生宿舍,为了标识每个宿舍房间及方便管理查找学生,会为每个宿舍房间一个编号,这个房间的编号就类似于内存单元的地址;房间中入住了学生,这就类似内存单元中存放了数据;不同类型的数据所需要分配的内存空间大小不同,这就类似于单人间、双人间、四人间和八人间等。如有以下定义:char a;int b;float c;double d;这里定义了四个不同类型的变量,它们各自所占有的内存空间也是不同的。由于变量a是字符型变量,系统为其分配1Byte的内存存储单元;;变量b是整型变量,系统为其分配2Byte的内存存储单元;变量c是单精度实型变量,系统为其分配了4Byte的内存存储单元;变量d是双精度实型变量,系统为其分配了8Byte的内存存储单元。所谓变量的地址就是系统为该变量在内存中所分配的存储空间的编号,但一个变量在内存中是占用多个连续的存储单元,变量的地址就用该单元区域的第一个字节单元的地址,即首地址。即地址就是用来标识数据在内存存储单元的一种数据类型中,以方便用户对存储在各个内存单元中的数据进行正确的访问,即可以通过变量在内存中的地址间接访问该变量。在C程序设计语言中,地址也称为指针(Pointer)。指针可以用来指向各种类型的变量,如指向整型变量、实型变量、字符型变量、字符串、数组以及其元素、函数、结构体、共用体,甚至可用来指向另一个指针,形成多级指针等。
二、区分变量、变量名、变量的地址和变量值
为了更准确的掌握指针这种数据类型,我们先来掌握变量、变量名、变量的地址和变量值的区别。所谓的变量就是命名的内存空间,变量在内存中占用一定的内存空间,用来存储其对应类型的数据;所谓的变量名就是为该变量所占内存空间所取的一个更容易记忆的名字;所谓的变量的地址就是该变量在内存中所占用的空间的首地址(内存地址即内存单元的编号);所谓的变量值就是该变量所占用的内存单元中存放的数据即内存单元的内容。
三、指针变量的定义、初始化赋值和引用
(一)指针变量的定义格式:所指向变量的类型 *指针变量名;
例如:char *p1; /*定义一个指向字符型变量的指针变量p1*/;
int *p2; /*定义了一个指向整型变量的指针变量p2*/
float *p3;/*定义一个指向单精度实型变量的指针变量p3*/
注意:C语言中的所有变量都必须“先定义后使用”,“不定义不能用”。指针变量也必须遵守此规则。为了说明指针变量是存放变量地址的一种特殊变量,因此在定义变量时必须变量名前加“*”号,即定义时“*”就指针变量的标志;指针变量的基类型表示指针变量所指向的另一个变量的类型,因为不同数据类型的变量所占用的内存空间是不一样的,因此指针变量的某些操作具有特殊的意义。如指针变量加/减1,不是单纯的加/减1个字节,而是加/减一个所指向变量的字节个数,也即它指向了下一个同类型的变量,指针移动到了下一个同类型的变量,例如:int *p;int x=88; p=x; 如果执行p++;则p的值加2了个字节。
(二)指针变量的赋值方法
(1)变量的地址赋值给指针变量,则指针变量就指向了该变量。例如:int x, *p;p=x;则指针变量p就指向了整型变量x。
(2)相同类型的指针变量之间可以相互赋值,例如:float y, *p1,*p2;p1=y;p2=p1;则指针变量p1和p2保存了相同的地址值,即p1和p2都指向了变量y。
(3)赋空值NULL,例如:int *p1 =NULL;则指针变量p1不指向任何变量。
(三)指针变量的具体应用
与指针有关的运算符主要有
文档评论(0)