- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 八 章 指点 针
复习 指针变量:是一种特殊的变量,存放的是其它变量的地址,如:int a,*p=a;此时指针p就指向了变量a,就可以用指针p对变量a进行间接访问,即*p等价于a; 指针作为函数参数:如希望函数调用结束后,主调函数中实参变量的值改变,或希望通过指针参数将函数中的结果传递给主调函数,此时形参应定义成指针类型,函数调用时用某变量的地址或指向该变量的指针作为实参调用。 例如 例题 用指针的方法完成,将数组中的最小的数与第一个数对换,把最大的数与最后一个数对换。 复习2 int *p; 指向普通的整型变量或一维数组的首地址, *p代表一个整型变量或一维数组中的某一个元素。p++的含义? int (*p)[4]; 指向二维数组一整行,或指向整个一维数组, *p代表一整个一维数组,其中的每一个元素用(*p)[i]表示。p++的含义? 当作为函数参数时都是指针变量, 二维数组的访问有两种方法:下标法、指针法(一维数组指针、普通整型指针)。 8.5 指针与多维数组 例8.12 求3行4列二维数组中的最大元素(另一种方法) #include stdio.hint max_value(int *p, int n);main(){ static int aa[3][4]={{1, 3, 5, 7},{2, 4, 6, 8},{20, 15, 32, 12}}; int max; max=max_value(a[0][0], 3*4); printf(“max element is %d\n”,max);}int max_value(int *p, int n){ int i, m=*p; for (i=0;in;i++, p++) if (*pm) m=*p; return(m);} 该节结束,返回目录 8.6 指针数组与指向指针的指针 一、指针数组 1、指针数组的概念 指针数组是一种特殊的数组,它每个元素的类型都是指针类型(即地址),其它与一般数组相同。 2、指针数组的定义 类型名 *指针数组名[常量表达式]; 如:int *ap[3]; char *s[10]; 等等。 每个元素ap[i] 都等同于一个普通整型指针变量,可把某个量的地址赋给该元素(指针变量),该元素即指向那个变量,即可通过该元素对相应的变量进行间接访问。 8.3 指针与一维数组 当然,对s也可以进行其它赋值,如: s=a+2; 或 s=a[2]; 图变为: a[4] a[3] a[2] a[1] a[0] a a[0] a[1] a[2] a[3] a[4] s 说明:若进行操作 s=a; s+=2; 效果与上述相同。 8.3 指针与一维数组 当一个指针变量指向数组的首地址, 即int a[5],*p; p=a; 就可用p访问数组,*p就表示p所指向的数组元素,p+i表示p指向的当前元素向下的第i个元素的地址,*(p+i)就表示这个元素,与下标运算p[i]是等价的。 所以a[i], *(a+i), p[i], *(p+i)都表示数组的第i个元素,a+i, a[i], p+i, p[i]都表示数组的第i个元素的地址。 数组名a与指针变量p的区别在于:a是指针常量,而p是指针变量,p的值可以改变,而a的值不能变,如a++或a=a+2都是非法的,而p++是合法的。 8.3 指针与一维数组 数组int a[5] 指向数组元素的指针 数组元素的访问 a, a[0], p, p[0] a+1, a[1], p+1, p[1] a+i, a[i], p+i, p[i] a[0], *a, p[0], *p a[1],*(a+1), p[1],*(p+1) a[i], *(a+i), p[i], *(p+i) 使用指针访问数组元素的真正意义在于通过指针变量的加减访问数组的各个元素,如指针p指向数组的首地址,在循环程序中可进行p++运算,通过*p访问数组的各元素。如以下程序段: int a[5]={1, 3, 5, 7, 9}, *p; for (p=a;pa+5;p++) printf(“%d”,*p); 3、一维数组的访问 例8.6 用多种方法访问一维数组各元素#include stdio.hmain( ){ int a[5]={1, 3, 5, 7, 9}, i , *p=a; for (i=0;i5;i++) printf(“%d”,a[i]); 第一种方法,最直观 for (i=0;i5;i++) print
文档评论(0)