第八讲:函数_第1页
第八讲:函数_第2页
第八讲:函数_第3页
第八讲:函数_第4页
第八讲:函数_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八讲:函数,一、函数的声明与定义二、函数的调用三、函数的参数与返回值四、函数的嵌套与递归调用五、变量的作用域六、数组名作为函数参数,一、函数的声明与定义,定义函数的基本形式:由函数说明和函数体两部分组成。根据函数是否需要参数,可将函数分为无参函数和有参函数两种。(1)无参函数的一般定义形式function函数名():函数类型说明语句部分;可执行语句部分;,(2)有参函数的一般形式function函数名(参数1:数据类型,参数2:数据类型):函数类型说明语句部分;可执行语句部分;调用有参函数时,由函数的调用语句赋予这些参数实际的值。,二、函数的调用,定义好一个函数后,可以在帧代码中对其进行调用。如果是调用无参函数,调用格式为:函数名();即函数名直接出现在表达式中,或者直接把函数名作为一条语句;如果是调用有参函数,则还应在括号中给出相应的实参。即:函数名(实际参数表),注意:实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致,才能正确地进行数据传递。,函数调用的三种方式:,(1)函数表达式:函数作为表达式的一项,出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。如:c=2*sum(first,second);(2)函数语句:C语言中的函数可以只进行某些操作而不返回函数值,这时的函数调用可作为一条独立的语句。如:sum(first,second);(3)函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。c=sum(first,sum(first,second);,函数调用时需注意的地方:,(1)调用函数时,函数名称必须与定义的函数名称完全一致。(2)实参在类型上按顺序与形参,必须一一对应和匹配。(3)如果实参表中包括多个参数,对实参的求值顺序随系统而异。有的系统按自左向右顺序求实参的值,有的系统则相反。,返回语句return的两个重要用途:,1)立即退出函数,程序返回到调用语句处继续进行。2)可用来回送一个数值。,例:定义一个函数,用于求两个数中较大的数。,函数的定义:functionmax(num1:int,num2:int):intif(num1num2)returnnum1;elsereturnnum2;函数的调用:textBox.text=String(max(51,52);,三、函数的参数与返回值,1.函数的形参与实参定义函数时,函数首部括号内的参数被称为形式参数,简称形参。形参只能在该函数体内使用。调用函数时,函数名后括号内给出的值称为实际参数,简称实参。发生函数调用时,调用函数把实参的值,传送给被调用函数的形参,从而实现数据传递。,例:实参对形参的数据传递,s(100);functions(n:int)vari:int;textBox1.text=String(n);for(i=n-1;i=1;i-)n=n+i;textBox2.text=String(n);请问该程序段执行的结果?,说明:,1)实参可以是常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。4)实参和形参占用不同的内存单元,即使同名也互不影响。5)实参和形参的类型应相同或赋值兼容。,例:分析程序功能并写出运行结果,varn1:int=3;varn2:int=1;varn3:int=2;if(n1n2)f(n1,n2);elseif(n2n3)f(n2,n3);elsef(n1,n2);textBox1.text=String(n1);textBox2.text=String(n2);textBox3.text=String(n3);functionf(n:int,m:int)vart:int;t=n;n=m;m=t;,三、函数的参数与返回值(续),2.函数的返回值与函数类型函数可以分为有返回值函数和无返回值函数两种。(1)函数返回值与return语句函数的返回值,是通过函数中的return语句来获得的。return语句的一般格式:return(返回值表达式);return语句的功能:返回调用函数,并将“返回值表达式”的值带给调用函数。,注意:调用函数中无return语句,并不是不返回一个值,而是一个不确定的值。为了明确表示不返回值,可以用“void”定义成“无(空)类型”。,(2)函数类型在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。如果不一致,则以函数类型为准。如果缺省函数类型,则系统一律按整型处理。如果函数不返回值,可在定义函数时将函数类型定义为void,表示函数为无类型或空类型,可禁止在调用函数中使用被调用函数的返回值。,四、函数的嵌套与递归调用,1.函数的嵌套调用函数的嵌套调用是指,在执行被调用函数时,被调用函数又调用了其它函数。例:计算s=1k+2k+3k+Nk,textBox.text=String(1到10各数的3次方累加和为:+f2(10,3);functionf1(n:int,k:int):Number/计算n的k次方varpower:Number=1;for(vari:int=1;i=k;i+)power*=n;returnpower;functionf2(n:int,k:int):Number/计算1到n各数/的k次方的累加和varsum:Number=0;for(vari:int=1;i1)answer=factor(n-1)*n;elsereturn(1);return(answer);,五、变量的作用域,在函数内部定义的变量,被称为局部变量。局部变量在函数被调用时分配,在被调函数执行结束时释放,只在本函数范围内有效。例如:varn1=1;f();textBox.text=String(n1);functionf()varn1:int=2;输出的内容是什么?,五、变量的作用域(续),帧上处于任何函数之外的变量定义,在定义之处往下一直有效,除非被函数内的同名变量屏蔽。例如:varn1=1;f();textBox.text=String(n1);functionf()n1=2;则输出的内容是什么?,六、数组名作为函数参数,当把数组名作为函数参数时,数组名代表着该数组在内存中的地址。即此时是把地址作为值在进行传递。此时,使用下标,是在对实参进行操作。如下例:,vararr1:Array=newArray;vararr2:Array=newArray;arr10=10;arr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论