C语言程序设计能力教程(第二版) 赵凤芝 第8章-应用指针设计程序新.pptVIP

C语言程序设计能力教程(第二版) 赵凤芝 第8章-应用指针设计程序新.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文档。上传文档
查看更多
练习3:仔细阅读下面程序,分析指针的当前值。 main( ) { int i,*p,a[7]; p=a; for(i=0;i7;i++) scanf(%d,p++); printf(\n); for(i=0;i7;i++,p++) printf(%d,*p); } 5 8 7 6 2 7 3 a[0] a[1] a[2] a[3] a[4] a[5] a[6] p p p p p p p a p p=a; 指针变量可以指到数组后的内存单元 main( ) { int i,*p,t,a[5]; for(p=a;pa+5;p++) scanf(%d,p); printf(\n); p=a[0]; for(i=1;i5;i++) if (*pa[i]) {p=a[i];t=i;} printf(%d,%d,*p,t); } 练习4:找出5个整数中的最大数,并指明位置。 5 2 7 8 4 a[0] a[1] a[2] a[3] a[4] p p a p main() { int n,i,j,k,x,a[10]; int *p=a; for(i=0; i10;i++) scanf(%d,p+i); for(k=1;k10;k++) for(j=9,i=0;i10-k;i++,j--) if(*(p+j)*(p+j-1)) { x=*(p+j); *(p+j)=*(p+j-1); *(p+j-1)=x;} for(i=0;i10;i++) printf(%5d,*(p+i)); printf(\n); } 例6 用一维数组的指针解决冒泡法排序问题。 二、指针与二维数组 1、二维数组的地址 对于一维数组: (1)数组名array表示数组 的首地址,即array[0] 的地址; (2)数组名array是地址 常量; (3)array+i是元素 array[i]的地址; (4)array[i]?*(array+i) array int array[10]; 对于二维数组: 1)a是数组名, 包含三个元 素a[0],a[1], a[2]; 2)每个元素a[i] 又是一个一维 数组,包含4 个元素。 a a+1 a+2 *(*(a+0)+1) *(a[0]+1) int a[3][4]; a[0]+1 a[1]+1 a[2]+1 *(a+0)+1 *(a+1)+1 *(a+2)+1 a[0] a[1] a[2] 2000 2008 2016 a[0][0] a[0][3] a[1][0] a[1][1] a[2][0] a[2][1] a[0][1] a[0][2] a[1][2] a[1][3] a[2][2] a[2][3] 2000 2002 2008 2010 2016 2018 行指针与列指针 a[0][0] a[0][3] a[1][0] a[1][1] a[2][0] a[2][1] a[0][1] a[0][2] a[1][2] a[1][3] a[2][2] a[2][3] 2000 2008 2016 a[0] a[1] a[2] 2000 2008 2016 a a+1 a+2 *(a[i]+j)?*(*(a+i)+j) ?a[i][j] a:二维数组的首地址, 即第0行的首地址。 对二维数组 int a[3][4], 有: a+i:第i行的首地址。 a[i]?*(a+i):第i行第 0列的元 素地址。 a[i]+j?*(a+i)+j: 第i行第j列 的元素地址。 a[0][0] a[0][3] a[1][0] a[1][1] a[2][0] a[2][1] a[0][1] a[0][2] a[1][2] a[1][3] a[2][2] a[2][3] 2000 2008 2016 a[0] a[1] a[2] 2000 2008 2016 a a+1 a+2 注: (1)a+i=a[i]=a[i][0] =*(a+i)=a[i] 值相等,含义不同 (2)a+i ? a[i],表示 第i行首地址,指向 行。 (3)a[i]?*(a+i) ? a[i][0], 表示第i行第0列元

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档