第10章--指针.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文档。上传文档
查看更多
指向指针的指针 一个指针变量可以指向整型变量、实型变量、字符类型变量,当然也可以指向指针类型变量。当这种指针变量用于指向指针类型变量时,则称之为指向指针的指针变量。这种双重指针如图所示。 指向指针的指针 整型变量i的地址是i,将其值传递给指针变量p1,则p1指向i;同时,将p1的地址p1传递给p2,则p2指向p1。这里的p2就是前面讲到的指向指针变量的指针变量,即指针的指针。指向指针的指针变量定义如下: 类型标识符 **指针变量名; 例如: int * *p; 其含义为定义一个指针变量p,它指向另一个指针变量,该指针变量又指向一个基本整型变量。由于指针运算符“*”是自右至左结合,所以上述定义相当于: int *(*p); 既然知道了如何定义指向指针的指针,那么可以将图1用图2更形象地表示出来。 #includestdio.h main() { int i; char **p; char *month[]= { January, February, March, April, May, June, July, 【实例10.13】 使用指向指针的指针输出12个月。 August, September, October, November, December }; /*给指针数组中的元素赋初值*/ for(i=0;i12;i++) { p=month+i; printf(%s\n,*p); /*输出指针数组中的各元素*/ } } #includestdio.h main() { int a[10],*p1,**p2,i,n=0; /*定义数组、指针、变量等为基本整型*/ printf(please input:\n); for(i=0;i10;i++) scanf(%d,a[i]); /*给数组a中各元素赋值*/ p1=a; /*将数组a的首地址赋给p1*/ p2=p1; /*将指针p1的地址赋给p2*/ printf(the array is:); 【实例10.14】 利用指向指针的指针输出一维数组中是偶数的元素,并统计偶数的个数。 for(i=0;i10;i++) { if(*(*p2+i)%2==0) { printf(%5d,*(*p2+i)); n++; } } printf(\n); printf(the number is:%d\n,n); } 指针变量做函数参数 指针变量做函数参数 通过前面的介绍可知,整型变量、实型变量、字符型变量、数组名和数组元素等均可作为函数参数。此外,指针型变量也可以作为函数参数,这里具体进行介绍。 #include stdio.h void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } 【实例10.15】 调用自定义函数交换两变量值。 main() { int x,y; int *p_x,*p_y; printf(请输入两个数:\n); scanf(%d,x); scanf(%d,y); p_x=x; p_y=y; swap(p_x,p_y); printf(x=%d\n,x); printf(y=%d\n,y); } #includestdio.h void swap(int *p1, int *p2) 自定义交换函数*/ { int temp; temp = *p1; *p1 = *p2; *p2 = temp; } void exchange(int *pt1, int *pt2, int *pt3) /*3个数由大到小排序*/ { if (*pt1 *pt2) swap(pt1, pt2); /*调用swap函数*/ if (*pt1 *pt3) swap(pt1, pt3); if (*pt2 *pt3) swap(pt2, pt3); } 【实例10.16】 嵌套的函数调用。 main() { int a, b, c, *q1, *q2, *q3; puts(Pl

文档评论(0)

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

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

1亿VIP精品文档

相关文档