c指针操作.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文档。上传文档
查看更多
第五章 第四讲 之 指向指针的指针 5.4.1 指向指针的指针 过一个指针变量来存取变量的值,这种方式称为“间接存取”方式。例如: double d, *p=d; 这称为“一级间址”方式,如图5.17(a)所示。 如果一个指针变量中存放的是另一指针变量的地址,这就需要二次“间接存取”才能存取变量的值,这称为“二级间址”,如图5.17(b)所示,这样的指针变量称为指向指针的指针。理论上,存在“多级间址”,实际应用中很少超过二级间址。 第五章 第四讲 之指向指针的指针 5.4.2 定义指向指针的指针变量 指向指针的指针变量定义的形式为: 类型名 ** 指针变量名; “**指针变量名”等价于“*(*指针变量名)”,表示该指针变量的值存放的 是另个指针变量的地址,要经过两次间接存取后才能存取到变量的值。 例如语句: double ** pp; 5.4.3 指向指针的指针变量的应用 1.指向一个指针变量,间接存取变量的值 [例5.14]一个简单的例子说明如何通过二级间址方法存取变量的值。 第五章 第四讲 之 指向指针的指针 main( ) { double d=123.456,*p,**pp; pp=p; p=d; printf(“d=%8.3f,”,**pp); **pp+=543.2l; printf(”d=%8.3f\n”,d); } 第五章 第四讲 之 指向指针的指针 2.指向指针数组,存取指针数组元素所指内容 可以把一个指针数组的首地址赋值给指向指针的指针变量。例如: [例5.15]有三个等级分,由键盘输入1,屏幕显示pass,输入2显示good”,输入3显示“excellent。 main( ) { int grade; char *ps[ ]={”pass”, ”good”, ”excellent” }, **pp; pp=ps; printf(”请输入等级分(1~3):”); scanf(”%d”,grade); printf(“%s\n”,*(pp+grade-1)); } 第五章 第四讲 之 指向指针的指针 上述程序中pp指向指针数组ps的第一个元素ps[0],pp+1则指向ps的下 一个元素 ps[1],pp+2指向ps[2],如图5.19所示。因此,即就是字符 串”pass”的首地址,*(pp+1)则是字符串”good”的首地址,*(pp+2)是字符 串”excellent”的首地址。 第五章 第四讲 之 指针与结构 5.5.1 指向结构体变量的指针变量 在定义一个结构体变量时,系统将在内存中分配一块连续的存储空 间,用于存放结构体成员的数据,这块连续存储空间的首地址称为结 构体变量的指针(也称为结构体变量的首地址)。可以定义指向结构体 变量的指针变量,若把某结构体变量的首地址赋值给一个指针变量, 则称这一指针变量指向该结构体变量。指向结构体的指针变量定义格式是: struct 类型名 * 指针变量名; 第五章 第四讲 之 指针与结构 如下面定义一个结构体类型booktp来存储书的基本信息: 第五章 第四讲 之 指针与结构 以上定义了p为指向结构体变量的指针变量。若p=book5;,则称 指针变量p指向结构体变量book5,此时可用下述三种方式之一存取结构 体成员(三种方式是等价的): 1.结构体变量名.成员名 2.指针变量名 - 成员名 3.(*指针变量名).成员名 其中 “ - ” 是 指向运算符. 如有下面程序段: struct booktp *p,book5={“C++Buider网络开发实例”,”清汉计算机工作室”, 53,{2000,9}}; p=book5; 则book5.price 、p-price 以及 (*p).price 的值都是 53.0, 而book5.pubday.year 、p-pubday.year以及(*p).pubday.year 的值都是2000。 注意此处(*p), price的圆括号不能少.指针运算符“*”作用于指

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档