[工学]第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文档。上传文档
查看更多
[工学]第8章 指针.ppt

8.1 地址和指针的概念 随机访问数组元素用下标法,简洁,易理解;地址法操作数组,运行速度快。 for( j=0; jn; j++) scanf(“%d”,a[j] ); for( j=0; jn; j++) scanf(“%d”, a+j ); for( j=0; jn; j++) printf(“%d”, a[j] ); for( j=0; jn; j++) printf(“%d”, *(a+j) ); 访问元素就有两种方法: for( j=0; jn; j++) scanf(“%d”, a+j ); 由于数组名不允许赋值,在访问数组时仍显得不方便,例如: 每次循环要计算a+j,能否利用变量++的方法,直接产生元素的地址? int a[5],*p; p=a; 当指针与数组建立了联系后,就可用指 针来表示元素及其地址: p=a p[0]==a[0] p+1==a+1 p[1]==a[1] … … p+4==a+4 p[4]==a[4] 一、指向一维数组的指针: a p a[0] a[0] p[0] *p *a a+1 p+1 a[1] a[1] p[1] *(p+1) *(a+1) a+2 p+2 a[2] a[2] p[2] *(p+2) *(a+2) a+3 p+3 a[3] a[3] p[3] *(p+3) *(a+3) a数组元素的地址 a数组元素 二、指针的运算: 指针主要用来操作数组,以实现快速访问数组的目的。若一个指针与数组建立了联系,就可对指针进行算术运算,一般用+,-,++ ,--,得到某元素的地址。 1、指针的算术运算: 例如: 若int a[3]={12, -2, 34} ; int x=56 ,*p=a, *q=x; *p : 结果为a[0]的地址 *x : 等价x, 表达式值为56。 (*p)++ : 即a[0]+1,表达式值为13 *(p++) : p指针自加1后,所对应的单元, 即a[1], 结果为-2。 例程8-9: void main() { int *p,a[5]={ 1,2,3,4,5 }; p=a; p指向a[0] *p=1 p=a=a[0] p++; p指向a[1] *p=2 p=a[1] p+=3; p指向a[4] *p=5 p- -; p指向a[3] *p=4 } 例程8-10:哪个表达式有错?哪个变量的值=3? #includestdio.h void main () { int a[ ]={ 1,3,5,7 }, y1,y2,y3,y4,*p=a; y1=++*p++; y2=++(*p++); y3=(++*p)++; y4=(*++p)++; } 当两个指针指向同一数组时,还可利用关系运算符对两个指针变量进行比较,以确定是否同一个单元。 注意:仅当利用指针对数组操作时,对指针变量进行算术和比较运算才有意义。 3、指针的比较运算: 例程8-11: 对数组的三种访问方式。 void mian() { int a[5], I ,*p; for(I=0;I5;I++) scanf(%d,a[I]); 下标访问法 for( p=a; p(a+5); p++) scanf(“%d”, p ); 指针法 for( I=0; I5; I++) printf(“%d ”, *p++); for( I=0; I5; I++) scanf(%d, (a+I) ); 地址计算法 } 能正确输出结果吗? 下标访问法:在访问a[i]时,先将数组的首地址+相对位移量=元素地址求出;再对该地址对应的单元操

文档评论(0)

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

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

1亿VIP精品文档

相关文档