C语言程序设计教程 作者 宗大华 陈吉人 第5章.pptVIP

C语言程序设计教程 作者 宗大华 陈吉人 第5章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 5 章 指 针 本章着重讲述4个方面的内容: (1)建立地址就是指针的概念。 (2)指针变量的说明和初始化。 (3)指针变量的使用。 (4)指针数组的含义及使用。 5.1 指针和指针变量 5.1.1 直接访问和间接访问 所谓一个“变量的地址”,就是指其占用存储区中由小到大的第1个字节地址。 由这些可以看出下面的两点。 (1)地址起到了一个指向作用。 (2)在C语言中说一个变量的地址,其实还隐含有这个变量的类型信息在内,不能笼统地只把它视为一个地址。 由于一个变量的地址(指针)也是一个值(只不过它是一个地址值,而不是普通意义的数值),因此就可以把这个地址值存放到另一个变量里保存。这种专门用来存放变量地址的变量,称为“指针变量”。 由于一个变量的地址(指针)还隐含有这个变量的类型信息在内,所以不能随意把一个地址存放到任何一个指针变量中去,只能把具有相同类型的变量的地址,存放到这个指针变量里去。可见,指针变量也应该有自己的类型,这个类型与存放在它里面的地址所隐含的类型应该相同。 从变量名,找到这个变量对应的地址,从这个地址直接完成对存储单元进行访问的方法,称为对内存的“直接访问”。通过一个地址得到另一个地址,再由得到的这个地址访问所需的存储单元。这种由变量的地址得到另一个变量的地址,再通过得到的这个地址,完成对存储单元访问的方法,称为对内存的“间接访问”。 5.1.2 指针变量的说明和初始化 C语言把内存单元的地址视为一种数据类型,即指针型数据。存放指针型数据的变量,称为指针型变量,简称指针变量。 说明一个变量是指针变量的一般格式是: 存储类型 数据类型 *变量名 ; 要注意以下3点。 (1)“*”只起到一个标识的作用,它不是所说明的指针变量名本身的一个组成部分。 (2)说明中的数据类型,是指说明的指针变量里面所能存放的变量地址的类型。 (3)相同类型的指针变量可以在一个说明语句里出现,但每一个变量名的前面都要冠有指针变量的标识“*”。 5.1.3取地址运算符与指针运算符 1.取地址运算符: “”是一个单目运算符,使用时的一般格式是: 变量名 该运算符的运算对象只能是由变量名所指定的变量,运算结果是得到该变量的存储地址。 2.指针运算符:* “*”是一个单目运算符,其使用的一般格式是: *指针变量名 该运算符的运算对象只能是由指针变量名所指定的指针变量或一个地址,运算结果是访问该指针变量(或地址)所指的变量。 5.2 指针与数组 可以用一个指针变量指向数组,也可以用一个指针变量指向数组的某一个元素。前者称为“指向数组的指针变量”,简称“指向数组的指针”;后者称为“指向数组元素的指针变量”,简称“指向数组元素的指针”。 5.2.1 指向一维数组的指针变量 为了让一个指针指向一维数组,只要将这个一维数组的名字或这个一维数组第一个元素的地址赋给这个指针即可。 1.用指向数组的指针来引用数组的元素 这时可以通过“++”运算符来移动指针,得到数组所有元素的地址,从而就可以访问到数组的所有元素。 在指针p上进行++运算,并不是单纯加1,而是加上它所指变量数据类型的长度单位。 在将一个指针指向一维数组首地址后,C语言提供了下面4种直接访问该数组第i个元素的方法: 数组名[i] 指针变量名[i] *(数组名+i) *(指针变量名+i) 前面两种方法使用了数组元素的下标,所以称为“下标法”,后面两种方法使用了指针运算符,所以称为“指针法”。 数组名是一个地址常量,指向数组的指针是一个变量,因此不能把它们完全等同地加以使用,它们之间的区别有以下3点。 (1)数组名代表的是一个地址常数,指针是一个变量。 (2)数组名不能修改,指针可以改变指向。 (3)在数组名上只能进行加法,以计算出某个数组元素的地址,但不能对数组名进行增1、减1运算;而指针不仅可以进行加、减法,以计算出某个数组元素的地址,而且可以进行增1、减1运算,达到修改指针指向的目的。 2.用指向数组元素的指针来引用数组的元素 在把数组第i个元素的地址赋给指针变量后,这个指针就指向了该数组的第i个元素了。这时可以通过++和--运算符来向前、向后一步步地移动指针,得到数组所有元素的地址,从而访问到数组的所有元素;也可以通过减k或加k的办法(k是一个正整数),得到以第i个元素为基准的前第k个元素的地址,或得到以第i个元素为基准的后第k个元素的地址,从而访问到所要访问的数组元素。 5.2.2 指向字符串的指针变量 C语言还提供了基于指针变量来实现字符串的方法。由于指针变量是一个变量,它能够接受赋值。当把一个地址赋给它时,指针的指向也就随之改变。因此,利用字符型指针变量来处理字符串,在程序中使用起来会感到便利和

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档