C语言程序设计孙淑霞罗奕主编C语言程序设计09763第七章节.pptVIP

C语言程序设计孙淑霞罗奕主编C语言程序设计09763第七章节.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文档。上传文档
查看更多
馋死 尚辅网 / 孙淑霞 罗奕 主编 第七章 指 针 7.1 指针和地址 计算机在设计时根据地址总线为内存的每个字节都赋予了一个编号,这个编号叫做内存的地址。 通过变量名来直接存取变量值的方式称为“直接存取”方式。 在C语言中还可以通过称之为“间接存取”的方式来存取变量。先定义一个变量p,假设编译系统给它分配的内存地址为1000,然后将另一变量a的地址2011存放到变量p中,访问变量a时,可以先从变量p的内存地址1000中读出a的地址2011,再到2011去访问变量a的值。这里,变量p相当于一个指示牌,它的内存中存放的2011指示了要访问的对象的地址,所以将表示变量a的地址的2011叫做“指针”,即内存地址就是指针,而存放变量a的地址(即指针)的变量p叫做“指针变量”。 7.2 指针变量的定义和引用 7.2.1 指针变量的定义 形式:类型名 *指针变量名; 指针变量赋地址通常有如下几种方式: ① 通过地址运算符“”获取地址。例如: int k=10, *p; p=k; ② 通过其他指针变量获取地址。例如: float x=3.0; float *p=x,*q=p; ③ 通过库函数获得内存地址。 ④ 给指针变量赋空地址,即将NULL值赋给指针变量,地址为NULL的指针变量称为空指针。 7.2.2 指针的引用 在程序中定义了指针变量并对其赋值后,就可以使用指针了。例如: int x=10,*p=x; 指针变量p中存放的是变量x的地址,即指针变量p指向变量x,那么这里就可以通过指针变量p来访问变量x,如: *p=20; 表示将20存放到指针变量p所指的内存单元中,而p指向的是变量x,所以现在x的值变为20。 【例7.1】读程序,理解通过指针引用变量来进行运算。 #includestdio.h void main() { int a,b,c; int *pa,*pb;? pa=a; /*pa指向a*/ pb=b; /*pb指向b*/ scanf(%d,pa); /*输入a的值*/ *pb=*pa+1; /*将10+1赋给b*/ printf(a=%d b=%d\n,*pa,*pb); *pa*=5; /*与a*=5等价*/ ++*pb; /*与++b等价*/ (*pb)++; c=*pa*pb?*pa:*pb; /*将变量a和b中的最大值赋给c*/ printf(a=%d b=%d c=%d\n,*pa,*pb,c); } 程序运行实例如下: 10↙ a=10 b=11 a=50 b=13 c=50 7.3 指 针 运 算 指针运算是指对指针变量中的值进行的一种运算,其实是对指针变量中保存的内存地址进行运算,通过地址的变化来改变指针所指向的对象。 7.3.1 指针的移动 指针移动是指通过对指针变量重新赋值或对指针变量进行加上或减去一个数,使指针变量从当前位置指向一个新的存储单元。 针变量加上或减去一个数之后,指针变量的值如何变化和指针变量的基类型有关。 例如:一个int型的指针变量加1,其指针变量会从当前内存地址向地址增大的方向移动2个字节,而对一个double类型的指针进行减1运算,它将会从当前地址向地址减小的方向移动8个字节。 7.3.2 指针相减 指针相减是指对两个指针变量作减法运算,其结果是两个指针所指内存地址之间相差的存储单元个数。指针相减一般用于变量占用连续存储空间(比如数组)的情形,在其他情况下无实际意义。 7.3.3 指针比较 对于指向连续内存区域的两个或多个指针,可以通过关系运算对它们进行比较,以确定哪个指针指向的变量地址在前,哪个在后。通常指向同一目标(如同一数组)的指针进行比较时才有意义。 7.4 指针与数组 7.4.1 指向一维数组的指针 定义了一个整型数组a和一个指向该数组的整型指针变量p: int a[10], *p=a; 通过下面的语句可以访问数组a中的每个元素并为其赋值100: for(;p-a10;p++) *p=100; 然后可按下面方式访问并输出数组a中所有元素的值: int k; for(k=0;k10;k++) printf(%d ,*(a+k)); 上面的语句也可写成: int k; for(p=a,k=0;k10,k++) printf(%d ,*(p+k)); /*这句也可写成 printf(%d ,p[k]);*/ 由此可见,数组元素a

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档