C语言辅导班第8章.pptVIP

  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文档。上传文档
查看更多
第八章 指针 指针是C语言中一种重要的数据类型,是C语言的精华和特色之一,灵活的运用指针可以处理各种复杂的数据结构。它可以使程序简洁、紧凑、高效,学习和使用C语言,就要深入和掌握指针。 8.1 变量的地址 在介绍变量的地址之前,我们先打个很重要的比方。例如有一栋楼房,房子建好后对楼房的每个房间进行基本编号,一楼的房间依次编号为101、102、103、……二楼的房间依次编号201、202、203、……,如此类推。假如某家公司租用了这个楼房的三楼作为办公场所,其中301和302是紧挨着的两间房,被分配给这家公司财务科,并且我们在301门上挂了一个牌子写着财务科。305和306也是紧挨着的两间房,被分配给人力资源部,在305门上挂了一个牌子写着人力资源部。 我们以后到这家公司来办事,涉及到财务方面的问题我们只是说找财务科,而不是说找301和302,尽管财务科实际上就是找301和302。 一是由于我们对这家公司不熟悉,可能不知道财务科是哪个房间 二是可以减少我们的工作量,我们可以把找财务科的任务交给熟悉本公司情况的公司内部人员。 三是由于记忆的方便,财务方面的问题找财务科是很好记忆的,如果告诉你财务方面的问题找301和302可能过久了就不记得了。 内存地址的基本概念 计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就是内存地址。就像旅馆的每个房间都有一个房间号一样,如果没有房间号,旅馆的工作人员就无法进行管理。同样的道理,没有内存编号,系统就无法对内存进行管理。因为内存的存储空间是连续的,内存中的地址号也是连续的,并且用二进制来表示,为了直观起见,在这里我们将用十进制数进行描述。 如果在程序中定义了一个变量,C语言编译系统就会根据变量的类型为这个变量分配一定字节数的内存空间。例如:int型占4个字节,char型占一个字节,float型占4个字节等等。 直接存储方式 直接按变量地址存取变量值的方式。如:int a=5就是直接为变量a进行开辟存储单元,把5放到存储单元里。 间接存储方式 在一个存储单元里放的是变量的地址,由这个地址出发,找到存储单元的位置,取出数据。如指针。 8.2 指针变量 指针变量的定义 我们平时经常所说的“指针”就是指针变量的简称。比如指针变量p被称为指针p。经常用一个并不存在的符号“-”,来表示指向关系。 定义变量的一般形式 类型名 *指针变量1,*指针变量2,……; 例如: int a,*pi, *pj,c; 以上定义语句中,pi和pj都是用户标识符,在每个变量前的星号*是一个说明符,用来说明该变量时指针变量。 注意:变量前的星号不可省略,若省略了星号,就变成了把pi和pj定义为整型变量。 int是类型名,在这里,说明了pi和pj是两个指向整型(int类型)变量的指针,也就是说变量pi和pj中只能存放int类型变量的地址,这时我们称int是指针变量pi和pj的基类型。 如: double *pd; char *s1, *s2; 在这里定义了三个指针变量pd、s1、s2, 其中pd的基类型为double类型,在指针变量pd中,只能存放double类型变量的地址;s1和s2的基类型为char类型,在s1和s2中只能存放char类型变量的地址。 以下定义的p为一个指向指针的指针变量 int **p, *s, k=20; s=k; p=s; 在这里,指针变量p的基类型是基类型为int类型的指针类型。以上赋值语句中“”是求地址运算符,s=k用来求出整型变量k的地址赋给指针变量s,而使s指向k;p=s用来求出指针变量s的地址赋给指针变量p,它使p指向s。 为什么指针变量要有基类型呢? 一个指针变量中存放的是一个存储单元的地址值。这里“一个存储单元”中的“一”所代表的字节数是不同的:对short int类型整型而言,它代表2个字节;对int类型或float类型而言,它代表了4个字节,这就是基类型的不同含义。 二. 指针变量赋地址值 (1)通过求地址值运算符“”给指针变量赋值。(是单目运算符) 如 int a=10, *p, *q; p=a; (2)通过其他指针变量获得地址。基类型相同的指针变量之间可以相互赋值,从而使两个指针变量指向同一地址。 如上面: q=p; 也就是指针p和指针q同指向一个变量a。 注意:当进行赋值运算时,赋值号两边指针变量的基类型必须相同。 三. 给指针变量赋“空”值 除了给指针变量赋地址值外,还可以给指针变量赋NULL 值。例

文档评论(0)

考试教学资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档