C语言_第_7_章__指针.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文档。上传文档
查看更多
C语言_第_7_章__指针

7.1 指针的概念 变量与地址 指针变量的引用:—取地址运算 *—指针运算符 指针变量只能存放地址,不能存放非地址类型的数据。 例如: 说明: 如果“ap=a;” 1) *ap *ap相当于变量 a ,故它相当于a 2) *a a相当于ap,*ap相当于a,故它相当于a 3) (*ap)+ + 相当于a+ +。而*ap+ +因+ +和指针运算符同级,且求解过程“自右到左”,因此相当于 *(ap+ +) 例如: void main() { int *p1,*p2,*p,a,b; scanf(“%d%d”,a,b); p1=a;p2=b; if(ab){p=p1;p1=p2;p2=p;} printf(“a=%d,b=%d\n”,a,b); printf(“max=%d,min=%d\n”,*p1,*p2); } 7.2 引用调用 swap(int *p1, int *p2) { int p; p=*p1;*p1=*p2;*p2=p; } main(){ int a,b; int *ap,*bp; scanf(“%d%d”,a,b); ap=a;bp=b; if(ab) swap(ap,bp); printf(“\n%d,%d\n”,a,b); } 7.3对指针使用const限定符 1.const 限定符通知编译器禁止修改某个特定的变量.可以用const 限定符强制实现最低访问权原则.用这个原则正确地设计软件可大大减少调试时间的不良作用,并且能够使程序易于修改和调试. 2. 常指针: const的位置不同,而含意不同 char str1[10],str2[10]; char *const p1=str1;/*指向字符串的常量指针*/ p1=str2; //非法 *p1=‘m’; //合法 const char *p2=str1;/* 指向字符串常量的指针*/ *p2=‘m’; //非法 p2=str2; //合法 一、通过指针引用数组 int a[10],*p; p=a; p+1 指向a[1] a+1 指向a[1] p+i 指向a[i] 因此: *(p+i)就是a[i] 也可以写成:p[i] 例如: *(p+3)就是a[3] 由此可见,引用数组的方法有: 下标法:a[i]、p[i],例如 a[3]=9 p[4]=8等等 指针法:*(p+i),*(a+i) 例如 输出数组全部元素。 ①下标: main(){int a[10],i; for(i=0;i10;i++) scnaf(“%d”,a[i]); for(i=0;i10;i++) printf(“%d “,a[i]); } 通过数组名计算元素的地址,引用数组元素。 main(){ int a[10],i; for(i=0;i10;i++) scanf(“%d”,a[i]); for(i=0;i10;i++) printf(“%d ”,*(a+i ) ); } 用指针引用数组元素。 main(){ int a[10],*p=a; for(i=0;i10;i++) scanf(“%d”,a[i]); for(i=0;i10;i++) printf(“%d “,*(p+i ) ); } 要注意指针变量的当前值。 main() { int *p,i,a[10]; p=a; for(i=0;i10;i++) scanf(“%d”,p++); for(i=0;i10;i++,p++) printf(“%d “,*p); printf(“\n”); } 使用指针运算注意事项: p++:指针指向下一个元素。 *p++:++和*运算同级,自右到左运算。相当于*(p++) for(i=0;i10;i++,p++) printf(“%d “,*p); 等价于 : for(i=0;i10;i++) printf(“%d “,*p++); *(p++)与*(++p)作用不同。 (*p)++: p指向的元素的值加1。 设p指向数组a的第i个元素,则 *(p++) 相当于 a[i++] *(++p) 相当于 a[++i] *(--p) 相当于 a[--i] (1)若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为6的表达式是 A)*p+6 B)*(p+6) C)*p+=5 D)

文档评论(0)

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

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

1亿VIP精品文档

相关文档