网站大量收购独家精品文档,联系QQ:2885784924

《C语言程序设计》课件——45指向数组的指针作函数参数.pptVIP

《C语言程序设计》课件——45指向数组的指针作函数参数.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共7页,可阅读全部内容。
  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文档。上传文档
查看更多

指向数组的指针作函数参数9.7.3指向数组的指针作函数参数

指向数组的指针变量也可以作为函数参数。

【例9.13】求二维数组a中全部元素的和(要求用指针作实参,数组名作形参)。

intarr_add(intarr[],intn)/*n为数组的元素个数*/

{inti,sum=0;

for(i=0;in;i++)sum=sum+arr[i];

return(sum);

}

main()

{inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};

int*p,t;

p=a[0];t=arr_add(p,12);

printf(t=%d\n,t);

}运行结果为:

t=144【例9.14】求一维数组中下标为奇数的所有元素之和。

intodd_add(int*pt,intn)

{inti,sum=0;

for(i=0;in;i=i+2,pt=pt+2)sum=sum+*pt;/*注意各表达式的意义*/

return(sum);

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p,t;

p=a[1];t=odd_add(p,10);/*使p指向a数组中的第一个奇数元素*/

printf(t=%d\n,t);

}

9.7.4用指针变量名加下标的形式访问数组可以用指针变量名加下标的形式来访问一个数组元素。例如,如果使p指向数组a,可以p[2]来访问a[2],这是因为系统对p[2]总是先转换成*(p+2),然后执行的。【例9.15】求一维数组所有元素的平均值(要求用指针下标法)。

#defineN10

floataaa(float*p,intn)

{floatsum=0.0;

inti;

for(i=0;in;i++)

sum=sum+p[i];

return(sum/n);

}

main()

{floatnum[N],a;

inti;

for(i=0;iN;i++)

scanf(“%f”,num[i]);

a=aaa(num,N);

printf(“aaa=%8.2f\n”,a);

}当i=1时,p[1]被解释成*(p+1),而p+1是num[1]的地址。【例9.16】有3个学生,每个学生学5门课,已知所有学生各门课的成绩,分别求每门课的平均成绩和每个学生的平均成绩。设各学生成绩如下:

课程1课程2课程3课程4课程5

学生1:10060708152

学生2:6271839298

学生3:9070506040

floats_pjcj(float(*p)[5])/*求学生平均成绩使用行指针*/

{floatsum=0;

inti;

for(i=0;i5;i++)

sum=sum+*(*p+i);

return(sum/5);

}floatk_pjcj(float*p)/*求各科目平均成绩使用列指针*/

{floatsum=0;

inti;

for(i=0;i3;i++,p=p+5)sum=sum+*p;

return(sum/3);

}

main()

{floats[3][5]={{100,60,70,81,52},

{62,71,83,92,98},

{90,70,50,60,40}};

inti;

for(i=0;i3;i++)

printf(学生平均成绩:%d:%6.2f\n,i+1,s_pjcj(s+i));

printf(\n);

for(i=0;i5;i++)

printf(科目平均成绩:%d:%6.2f\n,i+1,k_pjcj(s[0]+i));

}用数组名作函数参数是因为数组名代表数组的起始地址,用数组名作参数传递的是地址(将数组起始地址传递给被调用函数的形参)。既然地址可以作为参数传递,那么指向数组的指针变量当然也可以作为函数参数。分析:

(1)函数中p为指向整型数组的指针变量,它的值必须为二维数组的列地址a[0]或a[0][0],指向a数组的第一个元素。

(2)在调用a

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档