C语言程序设计朱建芳第09章节幻灯片.pptVIP

C语言程序设计朱建芳第09章节幻灯片.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文档。上传文档
查看更多
例9-30 编写程序用来找出4个字符串中按字母排序最大的字符串 /*exam9-30*/ #include “stdio.h” #include “string.h” main() { char ﹡str[4]={“bee”, “dog”, “pig” , “elephant”}; int i,j,k; char ﹡s; for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) { if(strcmp(str[k],str[j])0) k=j; } if(k!=i) {s=str[i];str[i]=str[k];str[k]=s;} } printf(“The last string is:\n”); printf(“%s”,str[3]); } The last string is: pig 程序运行结果: 9.7.2 指向指针的指针 指针变量作为一个可以存放变量地址的存储空间在内存中有着对应的地址,如果再设置一个指针变量专门用来存放其它指针变量的地址,那么这种指针变量就称为指向指针的指针变量或者又称为二级指针。 指向指针的指针变量的定义形式一般为: 类型名 ﹡﹡指针变量名 例如: int ﹡﹡p; 定义完指向指针的指针变量后,就可以对该变量进行赋值和使用了。 例如: int i=100; int ﹡﹡p,﹡q; q=i; p=q; printf(“i=%d,﹡q =%d,﹡﹡p =%d\n”,i,﹡q,﹡﹡p); i=100, ﹡q=100, ﹡﹡p=100 程序运行结果: 说明: (1)指向指针的指针变量进行赋值时,只能将其它指针变量的地址赋给该变量。 (2)当二级指针变量的类型与一级指针变量的类型不同时,不能将一级指针变量的地址赋给二级指针变量。例如以下的赋值操作是非法的: int ﹡﹡p; char ﹡q; p=q; /*非法,由于一级指针变量的类型与二级指针变量的类型不同*/ (3)i、﹡q和﹡﹡p三者等价,输出结果均为100,这是因为p指向指针变量q,当做﹡p操作时,得到的是指针变量q的值(即i的地址);当再做一次﹡运算时,﹡﹡p得到的就是指针变量q所指的变量的值,即i的值。三者之间的指向关系如图9-16所示 指向指针的指针与字符数组关系很密切,常被用来操作字符数组,例如例9-30也可以使用指向指针的指针来实现。 /*exam9-31*/ #include “stdio.h” #include “string.h” main() { char ﹡str[4]={“bee”, “dog”, “pig” , “elephant”}; int i,j,k; char ﹡﹡p,﹡s; p=str; for(i=0;i3;i++) { k=i; for(j=i+1;j4;j++) { if(strcmp(﹡(p+k),﹡(p+j))0) k=j; } if(k!=i) {s=﹡(p+i);﹡(p+i)=﹡(p+k);﹡(p+k)=s;} } for(i=0;i4;i++) printf(“%s”,﹡(p+i)); } [演示] 程序分析: 由于二级指针变量p初始指向数组str的首元素str[0],因此﹡(p+i)存放的就是第i个字符串的首地址,即﹡(p+i)指向数组元素str[i]。 注意:程序的最后一行输出语句不能写为:“printf(“%s”,﹡﹡(p+i));”,﹡﹡(p+i)在这里代表的是第i个字符串的第一个字符。 C语言允许定义多级指针变量,也就是说在定义指向指针的指针变量时可以允许有多个﹡,不过在实际使用过程中极少有超过二级以上的间接访问,因为级数越多,使用起来就越复杂,就越容易出错。 例9-10 分别使用下标法和指针法输出数组中各元素的值 /*exam9-10*/ #include “stdio.h” main() { int a[10]; int i,﹡p; for(i=0;i10;i++) scanf(“%d”,a[i]); printf(“\n”); for(i=0;i10;i++) printf(“%d”, a[i]); /*利用数组下标法输出数组中的元素*/ printf(“\n”); for(i=0;i10;i++) printf(“%d”, ﹡(a+i)); /*利用指针法输出10个元素的值,﹡(a+i)等价于a[i]*/ printf(“\n”)

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档