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指针.ppt

void print (name, n) char * name[ ]; int n; {int i; printf(After sort:\n); for (i=0; in; i++) printf (name[%d]=%s\n, i, name[i]); } 定义方法与简单变量指针定义相同,但引用略有不同 例: int a[10]; int ?p; /*定义*/ p=a[0]; /*将a的第1个元素的地址赋给p*/ 一、数组元素指针变量的定义与引用 ? 指针也可用下标表示。 如:P[2], 表示引用数组元素a[2] C语言规定: 数组a的首地址即用a[0]表示,亦可用a表示 所以:p=a[0]; 和 p=a等价 例:/*----exp7_3.c----*/ #includestdio.h main( ) { int al=123, a2=234, a3=345; int *pl, *p2, *p3; int as[3]={1, 2, 3}, *ps; pl=a1; p2=p1+1; p3=p2+1; printf(p1=%ld\n p2=%ld\n p3=%ld\n, p1, p2, p3); printf (*p1=%ld\n *p2=%ld\n *p3=%ld\n, *p1, *p2, *p3); ps=as; printf (ps[0]=%d\n ps[1]=%d\n ps[2]=%d\n, ps[0], ps[1], ps[2]); } 运行结果: p1=262737918 p2=262737920 p3=262737922 *p1=123 *p2=0 *p3=320 ps[0]=1 ps[1]=2 ps[2]=3 地址 a1的值 系统给定的值 数组元素地址 注意: 指针变量在未赋值前指向一个不定值 例:#include stdio.h main ( ) { int *p; printf( *p=%d, p=%ld, *p, p); } 运行结果:*p=0, p=3842 int *p=a[0]; 或 int ?p=a; ?(等价于) int ?p; p=a; 不能有这样的语句: ?p=a[0]; 1. 由首地址指针来引用数组中的其它元素。 设p为a的首地址,p=a,或p=a[0]; × 可以在定义指针变量时赋初值: int a[4]={1, 2, 3, 4}; p+1为a[1]的地址,若a为int,p+1相当于地址+2, 而当a为float时,p+1相当于地址+4. p+1 代表的是地址加一 指针 地址: 数组元素 a[0] a[1] a[2] ? b[0] b[1] b[2] ? pa pa+1 pa+2 ? pb pb+1 pb+2 ? 2000 2002 2004 ? 2080 2084 2088 如:int a[3], *pa; flaot b[3], *pb; pa=a; pb=b; 则指针与数组元素的关系为: 一般地: p+i 代表 a[i] 的地址. 引用a[i]的值: 可使用a[i], ?(p+i), ?(a+i), p[i] 例:/*----exp7_2.c----*/ #include stdio.h main( ) { int a[4]={1, 2, 3, 4}, *p, i; p=a; i=0; do { printf(*p=%d, p=%ld\n, *p, p); p=p+1; i=i+1; } } while (i4); 运行结果: *p=1, p=269750264 *p=2, p=269750266 *p=3, p=269750268 *p=4, p=269750270 例:int a[10], i; int ?p; p=a; 则: ?(p+i)和a[i]都是取数组元素的值,而p+i可直接指向a[i]。 2.在寻找数组元素时,用p+i比a[i++]速度快 例:输出已知一维数组中的5个整型数 (数组表示形式) #includestdio.h main( ) { int a[5]={1,2,3,4,5},i; for (i=0;i5;i++) printf(“%d\t”,a[i]); { 例:输出已知一维数组中的5个整型数 (指针中的地址相对表示形式) #includestdio.h main( ) { int a[5]={1,2,3,4,5},i; for

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档