- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
【案例6-5】判别一个整数数组中各元素的值,若大于0则输出该值,若小于等于0则输出0值。分析:首先定义一个无返回值函数output,并说明其形参n为整型变量。在函数体中根据n值输出相应的结果。在main函数中用一个for语句输入数组各元素,每输入一个就以该元素作实参调用一次output函数,即把数组元素a[i]的值传送给形参n,供output函数使用。#includestdio.hvoidoutput(intn){if(n0)printf(%d,n);elseprintf(0);}voidmain(){inta[5];inti;printf(请输入5个整数:\n);for(i=0;i5;i++){scanf(%d,a[i]);output(a[i]);/*函数的参数是数组元素*/}}(二)数组名作函数参数前面已经讨论过,在变量作函数参数时,所进行的值传送是单向的。即只能从实参传向形参,不能从形参传回实参。形参的初值和实参相同,而形参的值发生改变后,实参并不变化,两者的终值是不同的。而当用数组名作函数参数时,情况则不同。由于实际上形参和实参为同一数组,因此当形参数组发生变化时,实参数组也随之变化。当然这种情况不能理解为发生了“双向”的值传递。但从实际情况来看,调用函数之后实参数组的值将由于形参数组值的变化而变化。【案例6-6】数组student中存放了一个学生5门课程的成绩,求平均成绩。#includestdio.hfloatave(floats[5])/*求平均值*/{inti;floatave1,sum=s[0];for(i=1;i5;i++)sum=sum+s[i];ave1=sum/5;returnave1;}voidmain(){floatscore[5],average;inti;printf(\n输入5门课的成绩:\n);for(i=0;i5;i++)scanf(%f,score[i]);average=ave(score);/*以数组名为实参调用ave函数*/printf(平均分数是:%5.2f,average);}【注意】①程序中用数组名作函数实参,函数ave的形参也定义为数组。注意,应在主调函数和被调用函数中分别定义数组,例中s是形参数组名,score是实参数组名,分别在其所在函数中定义,不能只在一方定义。②数组名作函数参数时,实参和形参都应为数组名,此时,实参与形参的传递为“地址传递”,所谓地址传递是指在调用函数时,系统并没有给形参数组分配新的存储空间,而只是将实参数组的首地址传送给形参数组,使形参数组与实参数组共用同一数组空间。第三节变量的分类一、变量的作用域变量的作用域是指变量的有效范围。C语言允许把一个大的程序分成几个文件,每个文件分别包含若干函数,各个文件可以分别进行编译,然后再链接到一起形成一个完整的可执行文件。程序中各个函数之间的通信可以通过参数传递来实现,也可以通过使用公共的数据来实现。那么,哪些数据可以被各个函数共用而哪些数据又不能共用呢?这就涉及到变量的作用范围问题。根据变量的作用范围的不同,可将变量分为局部变量和全局变量。(一)局部变量局部变量是指在函数内部或程序块内定义的变量。局部变量只在定义它的函数或程序块内有效。在函数内定义的变量以及形式参数均是局部变量。【案例6-7】有关局部变量的例子。分析:在程序中两个num变量都是局部变量,只在本身函数里可见。因此,在两个函数出现同名的变量不会互相干扰。#includestdio.hvoidadd(int);main(){intnum=5;add(num);printf(\n%d,num);/*输出5*/}voidadd(intnum){num++;printf(%d,num);/*输出6*/}【试一试】运行程序,看看你的结果是否正确。(二)全局变量在函数外部定义的变量,从其的定义位置开始,到本文件结束为止的所有函数都可以直接引用,所以这种变量又称为全局变量或外部变量。例如:a、b的作用范围x、y的作用范围intx,y;main(){/*...*/}inta,b;fun1(){a、b的作用范围x、y的作用范围/*...*/}fun2(){/*...*/}对于具有全局作用域的变量,我们可以在程序的任何位置访
文档评论(0)