资源描述:
《c语言课件-7.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章大连理工大学函数1本章要点函数的定义函数的调用函数间的数据传递变量的存储类型变量的作用范围内部函数和外部函数2C程序是函数的集合体,每个函数是一个独立的程序模块。有一个主函数,若干个子函数,程序总是从主函数开始执行;函数可集中或分散存放在一个或多个源程序文件中。所有子函数地位平等,可互相调用、自我调用。·引入函数的优点:减少重复编写程序的工作量;使程序便于调试和阅读。函数F1()main()F11()F2()F21()F22()C语言程序的结构7.1函数的概念和函数的定义3数学函数math.h字符和字符串函数ctype.h,string.h输入/输出函数stdio.h
2、动态存储分配函数calloc(),malloc()形式无参函数有参函数空函数库函数用户定义函数:C函数的分类4[7-1]输入三个整数,计算它们的和并输出运算结果。main(){inta,b,c,sum;scanf("%d,%d,%d",&a,&b,&c);sum=add(a,b,c);printf("sum=%d",sum);}intadd(intx,inty,intz){ints;s=x+y+z;returns;}函数示例定义的求和函数57.1.2函数的定义定义函数应包括的内容:(1)指定函数的名字,以便以后按名调用;(2)指定函数的类型,即函数值的类型;(3)指定函
3、数的参数的名字和类型(有参);(4)指定函数执行的操作,即函数完成的功能。在程序中用到的所有函数,必须先定义,后使用。6定义函数的一般形式类型标识符函数名(形式参数表){[说明部分]语句}若无参数,写void或空。是被初始化的内部变量,寿命和可见性仅限于函数内部若不说明类型,一律自动按整型处理函数体(一段程序,实现函数的功能)71.无参函数的定义形式类型标识符函数名(){[说明部分]语句}[例7-1]print_message(){printf("Howareyou!");}8[例7-2]intmax(intx,inty){intz;z=x>y?x:y;returnz;
4、}类型标识符函数名(形式参数表列){[说明部分]语句}intmax(x,y)intx,y;{intz;z=x>y?x:y;returnz;}形参变量的说明(传统形式)形参变量的说明(现代形式)2.有参函数的定义形式93.形式参数说明形式参数:在定义函数时函数名后面括弧中的变量名在形参表中说明的形参,在函数体中不再说明,可以同一般变量一样直接使用。形参调用前不占内存单元,调用时占用,调用后释放。形参是函数的内部变量,只在函数内部才有意义。对每个形参必须指明其名字和数据类型。多个形参用逗号分隔。107.1.3函数的调用1.函数调用的一般形式为:函数名(实际参数列表);或函数名(
5、实际参数列表)说明:实参必须有确定的值,可以是常量、变量、表达式及函数调用。实参与形参的类型、个数、顺序必须一致。多个实参用逗号分隔。2.执行过程:计算各个表达式;把得到值赋给对应的形参;执行函数体;遇到return语句或执行完最后一条语句,返回到函数调用处。11(1)函数语句:(把函数调用作为一个语句)一般形式:函数名(实际参数表);使用情况:这种方式常用于调用一个可以忽略返回值或没有返回值的函数,只要求函数完成一定的操作。例如:print_message();3.函数调用的具体方式(2)函数表达式:(函数调用出现在一个表达式中)一般形式:变量名=函数表达式使用情况:这种
6、表达式称为函数表达式。要求函数带回一个确定的值参加表达式的运算。例如:c=3+max(a,b);d=pow(c,i);127.1.4函数的返回值2.函数的返回值语句一般形式:return表达式;或return(表达式);功能:退出函数,将表达式的值带回主调函数,回到程序原来的位置继续执行。定义:通过函数调用使主调函数得到一个确定的值,称为函数的返回值。13说明:return语句只能把一个返回值传递给调用函数。返回值的类型为定义的函数类型,若return语句中表达式类型与函数类型不一致,以函数类型为准。返回值可以是有确定值的常量、变量或表达式,也可以是地址。当返值是地址时,应
7、该用指针接受。无返回值的函数,定义为void类型(无类型函数)。一个函数中可以有多个返回语句。14[例7-3]用函数facto计算m阶乘。main(){intm;longmm;longfacto();scanf("%d",&m);mm=facto(m);printf("%d!=%ld.",m,mm);}longfacto(intx){longy;for(y=1;x>0;--x)y*=x;return(y);}函数执行过程main(){mm=facto(m);}facto(x){return(y);}调用返回函数