第八章 指针及数组.pdfVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 指针与数组 经过前面章节的基础的学习,我们终于灰常高兴的迎来了这一章,在这一章节当中, 我们会接触到C语言一个非常重要的概念,也是C语言的核心指针,同时我们会 学习数组的相关概念和使用方法,把这两个概念放到一个章节中是因为他们之间的关系剪 不断理还乱... 在本章开始之前,我要提醒大家,从这一章开始之后的内容相比之前章节的内容要抽 象一些,啥意思呢?就是要相比起来要比之前稍微难一些,这其中的难,也就是指抽象程 度要高,这就需要大家不断的思考,不断的实践才能了解这些概念。 对于好多初学者来说,指针的学习是一个噩梦,在这里我也会尽量用我能想到的最容 易理解的例子来为大家讲解,争取以最最通俗易懂的语言让大家了解这些抽象的概念。同 时我要叮嘱大家,要学会锻炼自己的抽象能力。在本章节中,我会画出好多图来对相应的 概念进行描述,希望以后大家在想到相应的概念的时候,脑海中也要有一张图,一张你自 己可以想明白这个概念的图,这个要比我讲解的内容要重要的多。 由于是第一次写书,经验不足,加上自己的水平限制,本章只讲解指针和数组最基本 的概念,带领大家入门,我也不希望在书里写过多的内容把大家绕晕,很多的东西还是要 靠自己多思考多练习。在以后的时间里,随着我自己不断的进步,同时也会不断的进行完 善。如有不到之处,还请大家谅解。 8.1地址和指针 每当情人节或者大学的周末或者节假日的旅游城市,宾馆总是爆满,这其中你懂得。宾 馆中有着一个一个的房间,那么宾馆的管理人员是通过什么管理这些房间的呢?当然是通过 房间号。每一个宾馆的每一个房间都有一个不重复的房间号,表示不同的房间。每一个房间 中住着不同的人。当我们入住宾馆的时候,要把我们的身份证信息登记到对应的房间号,退 房的时候,也要把对应的房间号中的信息删除掉。在宾馆里打电话订外卖,也一定是告诉外 卖人员送到某某宾馆xxx号房间,不会说送到小布丁身边来。 8.1.1地址的概念 在C语言当中,每一个变量都对应着内存中的某一块内存单元,这个概念在第一章的时 候就已经有过阐述。编程语言处理的是数据,那么数据就要有地方存储,这个地方就是内存 单元。那么在内存当中,其实是有好多内存单元组成的,这些内存单元是连续的,不同的类 型有着不同长度的内存空间,用字节来表示。那么每一个字节都有一个编号,类似于宾馆的 房间号。如下图: 在这张图中的右侧,这是一张抽象出来的内存数据区的图。假设我们定义6个变量,变 量名分别为a到f,方框里面的数字代表着这个变量存储的内容,左边的数字代表着这个变 量在内存当中的编号,我们称之为内存地址 (真正的内存中当然不会是这种表现形式,这里 用十进制表示地址只是用来演示),对应着宾馆当中的房间号。不同类型的数据会分配不同 的字节,就有着不同的长度。在图中我用不同的方框高度表示了不同类型的变量有着不同的 长度,比如a可以是 int类型,那么 int类型一共分配4个字节,这4个字节组成了 个 int类型的内存单元,变量a的地址就是这4个字节中的第一个字节的地址。在某个内存地 址中的数据,就好比宾馆中住的人,变量名其实只是一个代称,代表着某个内存地址。按照 图8.1.2,我们存储一个变量值,比如 int a=3;实际上是把3存入到内存地址为3602所代 表的内存单元中去。在编译以后的程序,已经将变量名转换为变量的地址,对变量值的存取 都是通过地址来进行的。这种直接按照变量的地址存取变量值的方式称为“直接存取”方式。 8.1.2 指针 理解了内存地址的概念,那么也就好理解指针的概念了。在日常生活中我们遇到指针这 个词的时候,总是会想问一下:指针?指向啥?一般看到指针联想到箭头指示比较多,比如: 这样的箭头在大马路上会常见到,比如道路指示牌,红绿灯都会以这样的箭头用于指示。 在C语言当中,指针的概念和我们常见的箭头比较类似,只不过C语言当中的指针是通 过一个地址指向了某个变量,也可以说,在C语言当中,指针就是地址。 比如在图8.1.2 中,地址为3602指向的变量就是变量a,我们可以说,3602是一个指 针,指向了变量a。 由于有指针概念的存在,故产生了指针变量的概念。我们脑海中的变量的概念都是存储 一个值,指针变量也不例外,只不过指针变量存储的内容比较特殊,指针变量,意味着定义 一个变量用来存储某个变量的地址。如图8.1.3: 图中有两个变量,一个是变量p,一个是变量a,方框下的数字是变量所在的地址,框 内的数字是该变量值。变量p的地址是2002

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档