- 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语言中指针教学探索
C语言中指针教学探索 摘要:指针在C语言中具有重要的地位,也是初学者最不容易掌握的内容。本文首先介绍了计算机的存储机制,在此基础上介绍了指针的概念,并给出了几个典型的指针应用的例子,说明了指针的方法。 关键词:C语言;指针;教学探索 中图分类号:G642.0 ?摇文献标志码:A 文章编号:1674-9324(2014)06-0233-03 指针在C语言中具有重要的地位,也是C语言教学中学生最难掌握的内容,一个学生是否学会了C语言,从他是否掌握了指针就可以大体上做出评判。本文重点探讨一下C语言在指针教学中的要点和体会。 一、计算机的存贮机制 在教学中我们发现,一些学习过计算机原理、汇编的同学,对指针的概念比较容易理解,掌握的也比较快,即便遇到一些比较复杂的指针关系,也往往能够通过自己的思考,给出正确的解释。究其原因,就是因为这些同学对计算机的存储机制比较了解,可以将指针与存储对应起来。为此,我们先简要介绍一下计算机的存储机制。在计算机中,数据以二进制的形式存储在内存中,内存的基本单位是字节,一个字节由8位二进制组成,一个数可以由一个字节表示,也可以由多个字节组合在一起表示,与具体的数值类型有关。比如,一般来说一个字符用一个字节表示就可以了,而一个整数则一般由多个字节表示,比如2个字节或4个字节等。具体由几个字节表示,与具体的C语言编译器有关。为了叙述方便,在以下的讨论中我们假定字符是一个字节,而整数是两个字节。 内存中每个字节都有一个编号,通常称为该字节的地址,用于指定该字节。就好比我们通常用号码对宾馆的房间进行编号一样。地址的长度也是与编译器有关的,在这里我们假定地址的长度为4个字节。图1给出了一个内存存储的示意图。同样为了叙述方便,无论是地址还是数据我们都使用的是十进制或者直接使用字符,而实际上应该是二进制的。在图1中,左边的表示地址,右边的表示存储的内容。在1000~1001这两个地址中,存储的分别是字符a、b,每个各种一个字节。1002和1004开始的两个字节,存储的分别是123和456两个整数。2010、2014和2018开始的4个字节,分别存储了1003、1000和2010,其含义我们在后面再介绍。在C语言中,一个变量是与一个地址所对应的,比如,如果定义了变量:int n,m;则编译器会自动为n、m分别分配一个地址,变量n、m的值就分别存储在它们所对应的地址中。 二、指针的基本概念 什么是指针?简单地说指针就是其值为地址的变量。一个指针变量的值是某个地址,该变量所指向的内容,则是该地址中所存储的内容。如同整型变量一样,指针变量也是一个变量,只不过整型变量的值是整数,而指针变量的值是一个指针,也就是说是一个地址,通过该地址可以找到指针所指向的内容。下面讨论中,指针变量我们简称为指针。我们先通过一个类比的例子来说明指针的概念。假设某宾馆有101、102……等房间,这些房间中,有些是住人的,比如101房间住的是张三,102房间住的是李四,则可以认为101房间的值是张三,102房间的值是李四。这个宾馆有些奇怪,除了住人的房间外,还有一些房间并不住人,里面只是有一个牌子,上面写着某个房间号。比如说,105这个房间,里面的牌子上写着102。那么105房间就可以认为对应一个指针变量,其值是一个地址102,该指针所指向的值,就是102房间的李四。这里要区分出指针自己的值以及指针所指向的值。在该例子中,105房间(指针)自己的值是102,其指向的值是李四。结合图1的例子,我们假设有以下定义:int *p1;char *p2;假设编译器为p1、p2分别分配的地址是图1中的2010和2014,则p1的值是1002,是一个地址,而p1所指向的内容,即*p1的值为地址1002中所存储的内容,即整数123。同样,p2的值是1000,也是一个地址,p2所指向的内容,即*p2的值为字符a。有了以上指针的基本概念后,再复杂的指针,也可以一步推导出具体的含义。比如如下的指针的指针的定义:int **p;还是假定编译器为p分配的地址是图1中的2018。则p的值是2010,是一个地址。P所指向的内容,也就是*p的值是地址2010中的内容1002,还是一个地址。P所指向的内容的内容,即**p就是存贮在1002中的整数123。C语言中,操作符“”可以得到一个变量的地址,比如:int n,*p;就可以通过p=n得到变量n的地址,并赋值给指针p。 三、指针的应用 在C语言中,指针的应用比较多,有些情况是用指针会比较方便,有些情况是必须用指针。下面给出几个有关指针使用的例子。 1.交换两个变量的数据,编写一个函数,实现两个变量数据的交换,初学者很可能给出这样的定义: void swap(int a,int b)
原创力文档


文档评论(0)