预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共45页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章函数7.1函数概述7.1函数概述7.2函数定义和调用上面程序由两个函数组成,一个是main()函数,一个是自定义函数area()。area()函数有两个参数x和y,area()函数功效是计算x和y乘积,并将其值返回到主函数。经过这个程序能够看出函数定义普通形式。定义普通形式:函数类型说明函数名(形式参数说明表列)函数首部{变量说明部分执行部分函数体}说明:(1)函数类型说明是用来说明该函数返回值类型,假如没有返回值,则其类型说明符应为“void”,即空类型。比如,在例7-1中area函数是一个float类型函数,其返回函数值是一个浮点数。假如函数返回值是整型,能够省略,所以也能够说函数类型缺省时,其类型为int型。(2)函数名必须是一个正当标识符,与变量命名规则相同,且不能与其它函数或变量重名。(5)当函数需要返回一个确定值时,须经过“return(表示式);”语句来实现,其中表示式就是函数返回值,例return(z);,即返回z值。假如没有return语句,或return语句不带表示式并不表示没有返回值,而是返回一个不确定值。若不希望有返回值,则必须在定义函数时说明“函数类型”为“viod”型。例7.2下面定义一个函数max()求两个整数最大值intmax(intx,inty){intz;if(x>y)z=x;elsez=y;returnz;}main(){inta,b,c;a=10;b=12;c=max(a,b);printf("max=%d",c);}运行结果:max=12该自定义函数类型为int,有两个形式参数x和y,类型均为int(注意形式参数说明格式)。例7.3下面定义一个无参、且无返回值函数prinstar(),在主函数中调用该函数。voidprintstar(){printf("****************************\n");}main(){inti;printstar();printf("\tHowareyou\n");printstar();}程序运行结果:****************************Howareyou****************************该函数类型说明为“void”,所认为无返回值函数,而且没有形式参数。7.2.2函数调用定义一个函数,目标是为了使用,所以要在程序中调用该函数才能执行它功效。1.函数调用普通形式:函数名(实际参数表列);2.函数调用方式按函数在程序中出现位置来分,能够有以下两种函数调用方式。函数语句把函数调用作为一条语句。普通形式为:函数名(实际参数表列);这种方式惯用于调用一个没有返回值函数,只要求函数完成一定操作。如例7.3中printstar()函数,调用方式为printstar();又如我们前面所用到printf()和scanf()函数都是以函数语句方式调用函数。函数表示式函数作为表示式中一部分出现在表示式中,以函数返回值参加表示式运算。这种方式要求函数是有返回值。比如:a=abs(-3);函数abs()是表示式一部分,它值赋给变量a。3.函数调用过程在执行函数调用时,实际上系统要完成以下过程:(1)被调函数全部形式参数分配内存,再计算实际参数值,并一一对应地赋予对应形式参数(对于无参函数,不做该项工作);(2)为函数说明部分定义变量分配存放空间,再依次执行函数可执行语句。当执行到“return(表示式)”语句时,计算返回值(假如无返回值函数,不做该项工作);(3)释放在本函数中定义变量所占用存放空间(对于static类型变量,其空间不释放),返回主调函数继续执行。4.函数申明同变量一样,函数调用也遵照“先申明,后使用”标准。(1)调用库函数时,普通需要在程序开头用“#include”命令。例:当调用getchar()函数时要在程序开头加一条命令“#include<stdio.h>”;调用数学库中函数,应该在程序开头加一条命令“include<math.h>”,这是因为对该函数说明等一些信息包含在对应.h文件中。故调用某个库函数,必须包含对应头文件。(2)调用用户自己定义函数,而且该函数与主调函数在同一个程序中,普通应该在主调函数中对被调用函数作申明。即向编译系统申明将要调用哪些函数,并将相关信息通知编译系统。函数申明格式:函数类型说明符被调函数名(参数类型1[,参数类型2……]);函数类型说明符被调函数名(参数类型1,形参1[,参数类型2,形参2……]);比如:申明函数floatarea(floatx,floaty);申明函数floatarea(float,float);二者效果相同当满足下面两个情况之一时,在主调函数中能够不对被调函数进行申明:被调函数定义在主调函数之前时,对被调函数申明能够省去。被调函数返回