资源描述:
《c程序设计 第8章 函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、重点:函数定义,函数参数和函数的值函数的调用,嵌套调用数组作为函数参数变量作用域变量的存储类别内部函数和外部函数第8章函数8.1概述C程序={一个主函数(main函数)一个主函数+若干其他函数函数库函数自定义函数无参函数有参函数说明:一个源程序文件由一个或多个函数组成。一个C程序由一个或多个源程序文件C程序的执行从main函数开始所有函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一函数,即函数不能嵌套定义,函数间可以互相调用,但不能调用main函数。标准函数或用户自己定义的函数。8.2函数定义的一般形式一
2、、无参函数的定义类型符函数名(){函数体}二、有参函数的定义类型符函数名(形参表)形参说明{函数体}类型符函数名(形式参数表列){声明部分语句}三、说明1、省略类型符的函数,系统自动定义为整型2、形参的定义必须在函数体外进行3、可定义空函数类型符函数名(){}4、函数名在函数体中不作为变量使用,返回的函数值由return给出return(表达式)(类型与类型符一致)8.2函数的调用一、调用方式1、函数语句:函数名(实参表);例:fun(x,y,z);prn();2、函数作为运算量参加表达式计算例:z=5*max(x,y);
3、3、函数作为参数参加计算例:d=max(max(a,b),c);4.多个实参值时按自右而左的顺序求值。例8.4main(){inti=2,p;p=f(i,++i);/*函数调用*/printf("%d",p);/*0*/}intf(inta,intb)/*函数定义*/{intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}8.3.1形式参数和实际参数主调函数和被调用函数之间有数据传递关系在定义函数时函数名后面括弧中的变量名称为“形式参数”在主调函数中调用一个函数时,函数名后
4、面括弧中的参数(可以是一个表达式)称为“实际参数”(简称“实参”)。8.3函数参数和函数的值例8.2调用函数时的数据传递。main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(intx,inty)/*定义有参函数max*/{intz;z=x>y?x∶y;return(z);}关于形参与实参的说明:(1)形参并不占内存中的存储单元。调用结束后,形参单元被释放。(2)实参可以是常量、变量或表达式(3)定义函数,必须指定形参的类型(4)实
5、参与形参的类型,个数,顺序应相同或赋值兼容。(5)实参对形参的数据传递都是值传递.8.3.2函数的返回值函数的返回值是通过函数中的return语句获得的。多return语句函数类型决定返回值的类型。以函数类型为准。(3)可用“void”定义“无类型”函数,以此明确表示“不带回值”。8.4.2函数调用的方式三种函数调用方式:1.函数语句把函数调用作为语句。函数调用后加“;”2.函数表达式函数出现在一个表达式中。3.函数参数函数调用作为一个函数的实参。m=max(max(a,b),c);8.4.3对被调用函数的声明和函数原型被
6、调用的函数必须是已经存在的函数如果使用库函数,应用#include命令(3)自己定义的函数,而且该函数与调用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数作声明。类型符函数名(参数类型1,参数类型2……);类型符函数名(参数类型1参数名1,参数类型2参数名2……);在文件开头进行外部声明,函数类型、函数名、参数个数、参数类型和参数顺序必须相同。main(){floata,b,c,d,m,max(floatx,floaty);scanf(“%f,%f,%f,%f”,&a,&b,&c,&d);m=max(max(
7、max(a,b),c),d);printf(“max=%f”,m);}floatmax(floatx,floaty){return(x>y?x:y);}/*max(floatx,floaty);也可在main()外。被调用函数的定义在主调函数之前,可以不声明。*/例8.1去掉x和y也行8.5函数的嵌套调用在定义一个函数的过程中调用另一个函数。8.6函数的递归调用在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。例8.8用递归方法求n!。求n!即5!等于4!×5,而4!=3!×4…1!=1。n!
8、=当n=0时n·(n-1)!当n>0时{fac(intn){intt;if(n==1
9、
10、n==0)t=1;elset=n*fac(n-1);returnt;}main(){intm=5,y;y=fac(m);printf(“%d”,y);}8.7数组作为函数参数数组名可作实参和形参,传递的是整个数组。1