c語言函数.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文档。上传文档
查看更多
【例8.10‘】判别一个整数数组中各元素的值,若大于0 则输出该值,若小于等于0则输出0值。编程如下: void nzp(int v) { if(v0) printf(%d ,v); else printf(%d ,0); } main() { int a[5],i; printf(input 5 numbers\n); for(i=0;i5;i++) {scanf(%d,a[i]); nzp(a[i]);} } 2.数组名作为函数参数 (实质是地址传递) 用数组名作函数参数与用数组元素作实参有几点不同: 1)用数组名作函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参二者不一致会发生错误。 2) 在用数组名作函数参数时,不是进行值的传送,在数组名作函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。如图所示: 2000 2002 2004 2018 a[0] a[1]… a[9] b[0] b[1]… b[9] 上图中设a为实参数组,类型为整型。a占有以2000为首地址的一块内存区。b为形参数组名。当发生函数调用时,进行地址传送,把实参数组a的首地址传送给形参数组名b,于是b也取得该地址2000。于是a,b两数组共同占有以2000为首地址的一段连续内存单元。从图中还可以看出a和b下标相同的元素实际上也占相同的两个内存单元(整型数组每个元素占二字节)。 【例8.11】数组a中存放了一个学生5门课程的成绩,求平均成绩。 float aver(float a[5]) { int i; float av,s=a[0]; for(i=1;i5;i++) s=s+a[i]; av=s/5; return av; } void main() { float sco[5],av; int i; printf(\ninput 5 scores:\n); for(i=0;i5;i++) scanf(%f,sco[i]); av=aver(sco); printf(average score is %5.2f,av); } 3) 在变量作函数参数时,所进行的值传送是单向的。即只能从实参传向形参,不能从形参传回实参。 而当用数组名作函数参数时,由于实际上形参和实参为同一数组,因此当形参数组发生变化时,实参数组也随之变化。调用函数之后实参数组的值将由于形参数组值的变化而变化。 【例8.11‘】判别一个整数数组中各元素的值,若大于0 则输出该值,若小于等于0则输出0。改用数组名作函数参数。 编程如下: void nzp(int a[5]) { int i; printf(\nvalues of array a are:\n); for(i=0;i5;i++) { if(a[i]0) a[i]=0; printf(%d ,a[i]); } } main() { int b[5],i; printf(\ninput 5 numbers:\n); for(i=0;i5;i++) scanf(%d,b[i]); printf(initial values of array b are:\n); for(i=0;i5;i++) printf(%d ,b[i]); nzp(b); printf(\nlast values of array b are:\n); for(i=0;i5;i++) printf(%d ,b[i]);} 用数组名作为函数参数时还应注意以下几点: a. 形参数组和实参数组的类型必须一致,否则将引起错误。 b. 形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检查形参数组的长度。当形参数组的长度与实

文档评论(0)

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

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

1亿VIP精品文档

相关文档