C程序设计课件10.指针幻灯片.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文档。上传文档
查看更多
三、指针作为函数参数 1. 数组名作为函数的参数 数组名是数组的首地址,即数组的指针。数组名作为函数参数,实质上是指向数组的指针作函数参数。这时,形参和实参都应时指针类型数据:如数组名(指针常量)或指针变量。 例:选择排序法对N个数排序 #define N 10 void sort(int *, int); main() {int a[N],i; for(i=0;iN;i++)scanf(%d,a[i]); sort(a,N); for(i=0;iN;i++)printf(%5d,a[i]); printf(\n); } void sort(int b[], int n) {int i,j,k,t; for(i=0;in-1;i++) { k=i; for(j=i+1;jn;j++) if(b[k]b[j])k=j; t=b[i];b[i]=b[k];b[k]=t; } return; } 形参和实参都是数组名,即指向数组的指针,传递数组的首地址。用指针变量也可达到这一目的。 如在主函数中定义: int a[N],i,*p; 函数定义中,形参说明: p=a; void sort(int b[], int n) 则:函数调用可改为: 或者: sort(p,N); void sort(int *b, int n) 数组名作函数参数与指向数组的指针变量作函数参数是一致的,形参与实参的对应关系有以下四种: 形式参数 实在参数 数组名 数组名 数组名 指针变量 指针变量 数组名 指针变量 指针变量 特别注意: 1. 形参与实参的对应:数据类型,指针类型。 2. 函数声明中,形参类型的说明。 四、二维数组的指针和指针变量 一、存贮结构:按行存贮 设有二维数组: int a[3][4] = {{1, 2, 3, 4}, { 5, 6,7, 8}, {9, 10, 11, 12}}; a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a0 a1 a2 把二维数组的每一行看一个特殊的一维数组,第i行的数组名为a[i]。如第一行可看作特殊的一维数组a[0]。 则a[i]是第i行的首地址,a或(a[0])是第一行的首地址。 这时: a?a[0] (或a=a[0]) *a??a[0] a+i?a[i] (或a+i=a[i]) *(a+i)??a[i] 指针先按行增加,a+i或a[i]为行指针。 a[i]?a[i][0](或a[i]=a[i][0]) *a[i]??a[i][0] 或 *(a+i)?a[i][0] *(*(a+i)) ??a[i][0] a[i]+j?a[i][j](或a[i]+j=a[i][j]) *(a[i]+j)??a[i][0] 或 *(a+i)+j?a[i][j] *(*(a+i)+j) ??a[i][j] 指针后按行增加,*(a+i)+j 或 a[i]+j 为数组元素的指针。 因此,访问数组元素a[i][j]的方法: *(a[i]+j) 或者 *(*(a+i)+j) ?? a[i][j] 2. 二维数组的指针 指向数组元素的指针变量 设:int a[3][4], ?p=a[0]; main ( ) { int i, a[3][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int ?p=a[0]; p=a[0]; for (i=1; i=12; i++,p++) { if (i%4= =0) printf(\n); printf (%4d, ?p); } } 指向

文档评论(0)

精品课件 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档