第八章指针教学课件.pptVIP

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章主要内容: 8.1 概述 8.2 指针的概念 8.3 指针变量 8.4指针与数组 8.5指针与字符串 8.6指针数组与多级指针 8.7函数指针与指针函数 8.1 概述 指针的引例 8.2 指针的概念 main() {float x; int y; … } 8.2 指针的概念 main() {int a,b,c; a=5; b=3; c=a +b; … } 8.2 指针的概念 C 语言还提供了对内存单元的“间接存取”方式 8.3 指针变量 指针变量:就是用来保存指针值(即变量地址)的变量。 8.3.1 指针变量的定义 指针变量在使用前必须定义,使其指向特定类型的变量,指针变量存放地址,必须定义为“指针类型”。 定义的一般形式: 类型说明符 *变量名1,*变量名2…. 注意: 1、int *p1, *p2; 与 int *p1, p2区别; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值 5、注意*和的理解 8.3.2 指针变量的应用 1.指针变量的赋值 一般形式: 类型标识符(数据类型)*指针变量名=地址值 赋值时的几点说明: 在给指针变量赋值时一定注意数据类型要一致; 若先定义了指针变量,然后进行赋值时不能出现*p=a的语句。 在给指针变量赋值时,来源可以是已有变量的地址,可以是其他指针变量的值或运算结果,或调用动态内存分配函数得到的内存地址。 2.用指针变量表示地址 当一个指针变量指向了某个变量后,它的值就是该变量的地址,就可将该指针值赋给其他的指针变量,或进行运算,也可以用它作为地址输入数据。 例8.1 用指针变量输入数据 3.用指针变量引用变量的值 4.指针变量的算术运算 指针的加减运算 指针的关系运算 8.3.3 指针变量作函数参数 两个错误的写法: 8.4 指针与数组 数组的指针:指数组的起始地址。 数组元素的指针:指数组元素的地址。 数组的地址?指针变量,指针变量就指向该数组了。 引用数组元素: ⑴下标法:a[3] ⑵指针法:用指针变量指向所找的数组元素。 占内存少,运行速度快。 8.4.1 指向一维数组元素的指针 ⑴ 数组名是该数组的指针 a是数组的首地址(即a[0]的地址),是一 个指针常量。 a = a[0],a+1 = a[1], … ,a+9 = a[9] 数组元素的下标表示法: a[0],a[1], … ,a[i], … ,a[9] 数组元素的指针表示法: *(a+0),*(a+1), … ,*(a+i), … ,*(a+9) 当p指向a[0]时,用p表示数组元素 下标法: p[0],p[1], … ,p[i], … ,p[9] 指针法: *(p+0),*(p+1), … ,*(p+i), … ,*(p+9) 例8.4 用指针变量引用数组元素的值 【补例】用指针法输出数组元素。  main( )  { int a[10], i, *p;  for (p=a; pa+10; p++)  scanf(%d,p);  for (p=a; pa+10; p++)   printf(%d ,*p);  printf(\n); } 指针的自增、自减的使用: 若使p指向数组a的元素(p=a),则: (1)p++,使p指向下一元素,即a[1],若执行*p,则取出a[1]的值。 (2)*p++相当于*(p++),作用是先得到p所指向的变量的值(*p),然后再使p+1赋给p。 (3)*(++p)是先使p值加1,再取*p。 (4)(*p)++是p所指向的元素值加1. (5)如果p当前指向a数组中第i个元素则 *(p--)相当于a[i--].先对p进行“*”运算再使p自减 *(--p)相当于a[--i].先使p自减,再作“*”运算 例8.5从键盘读入10个整数,计算并输出它们的和 例8.9 用指向数组元素的指针变量访问二维数组 例8-10用指向数组的数组指针变量,引用二维数组 void main() { int a[5][10],(*p)[10],i,j; p=a; for(i=0;i5;i++) for(j=0;j10;j++) scanf(%d,*(p+i)+j); for(i=0;i5;i++) {for(j=0;j10;j++) printf(%5d,*(*p+j)); printf(\n); p++; } } 例8-11 用数组指针变量访问二维数组

文档评论(0)

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

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

1亿VIP精品文档

相关文档