您好,欢迎访问三七文档
郑州信息科技职业学院教案授课题目:C语言中函数的定义和使用第九讲:C语言中函数的定义和使用授课时数:2教学目的与教学要求:1、掌握C语言中函数的定义和使用;2、掌握C语言中函数的参数传递。主要内容:1、使用函数的意义;2、函数的定义;3、函数的调用;4、形参和实参;5、参数的传递。重点和难点:1、函数的定义;2、形参和实参之间的传递方式。教学方法和手段教具多媒体演示和板书相结合授课内容:第七章函数7、1函数概述1、C语言的函数:C语言函数可以分为库函数、用户自定义函数。库函数由系统提供,程序员只需要使用(调用),用户自定义函数需要程序员自己编制。2、C语言的程序由函数组成,函数是C语言程序的基本单位。前面章节介绍的所有程序都是由一个主函数main组成的。程序的所有操作都在主函数中完成。事实上,C语言程序可以包含一个main函数,也可以包含一个main函数和若干个其它函数。C语言程序的结构如图所示。在每个程序中,主函数main是必须的,它是所有程序的执行起点,main函数只调用其它函数,不能为其它函数调用。如果不考虑函数的功能和逻辑,其它函数没有主从关系,可以相互调用。所有函数都可以调用库函数。程序的总体功能通过函数的调用来实现。3、使用函数的意义(补充)有些同学提出,我只用一个main函数就可以编程,为什么这么复杂,还要将程序分解到函数,还要掌握这么多概念,太麻烦了?我们说对于小程序可以这样做,但是对于一个有一定规模的程序这样做就不合适了。使用函数的几个原因:(1)使用函数可以控制任务的规模使用函数可以将程序划分为若干功能相对独立的模块,这些模块还可以再划分为更小的模块,直到各个模块达到程序员所能够控制的规模。然后程序员再进行各个模块的编制。因为各个模块功能相对独立,步骤有限,所以流程容易控制,程序容易编制,修改。(2)使用函数可以控制变量的作用范围(3)使用函数,程序的开发可以由多人分工协作。各个相对独立的模块(函数)可以由多人完成,每个人按照模块(函数)的功能要求,接口要求编制代码,调试,确保每个模块(函数)的正确性。最后将所有模块(函数)合并,统一调试、运行。(4)使用函数,可以重新利用已有的、调式好的、成熟的程序模块4、函数的一些概念(1)主函数、其它函数(2)主调函数(调用其它函数的函数)、被调函数(被其它函数调用的函数)(3)标准函数(库函数)和用户自定义函数(4)无参函数、有参函数(5)无返回值函数、有返回值函数5、C语言使用函数的一些说明(1)C程序是由函数构成一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编写设计的函数。C函数库非常丰富,ANSIC提供100多个库函数,TurboC提供300多个库函数。(2)main函数(主函数)是每个程序执行的起始点一个C程序总是从main函数开始执行,而不论main函数在程序中的位置。可以将main函数放在整个程序的最前面,也可以放在整个程序的最后,或者放在其它函数之间。7、2函数的一般形式函数应当先定义,后调用。函数定义的一般形式:函数应当先定义,后调用。函数定义的一般形式:说明:一个函数(定义)由函数头(函数首部)和函数体两部分组成1、函数头(首部):说明了函数类型、函数名称及参数。(1)函数类型:函数返回值的数据类型,可以是基本数据类型也可以是构造类型。如果省略默认为int,如果不返回值,定义为void类型。(2)函数名:给函数取的名字,以后用这个名字调用。函数名由用户命名,命名规则同标识符。(3)函数名后面是参数表,无参函数没有参数传递,但“()”号不能省略,这是格式的规定。参数表说明参数的类型和形式参数的名称,各个形式参数用“,”分隔。2、函数体:函数首部下用一对{}括起来的部分。如果函数体内有多个{},最外层是函数体的范围。函数体一般包括声明部分、执行部分两部分。(1)声明部分:在这部分定义本函数所使用的变量和进行有关声明(如函数声明)。(2)执行部分:程序段,由若干条语句组成命令序列(可以在其中调用其它函数)。注意:函数不能单独运行,函数可以被主函数或其它函数调用,也可以调用其它函数,但是不能调用主函数。[函数类型]函数名([函数参数类型1函数参数名1][,…,函数参数类型2,函数参数名2]){[声明部分][执行部分]}函数头函数体例:输入三个整数,求三个整数中的最大值,打印。7、3函数的参数和返回值7、3、1形式参数与实际参数1、形式参数(形参):函数定义时设定的参数。2、实际参数(实参):调用函数时所使用的实际的参数。例中,主函数中调用max函数的语句是:nmax=max(n1,n2,n3);其中n1,n2,n3就是实参,它们的类型都是整型。3、参数的传递在调用函数时,主调函数和被调函数之间有数据的传递-实参传递给形参。具体的传递方式有两种:(1)值传递方式(传值):将实参单向传递给形参的一种方式。(2)地址传递方式(传值):将实参地址单向传递给形参的一种方式。注意:(1)单向传递:不管“传值”、还是“传址”,C语言都是单向传递数据的,一定是实参传递给形参,反过来不行。也就是说C语言中函数参数传递的两种方式本质相同-“单向传递”。(2)“传值”、“传址”只是传递的数据类型不同(传值-一般的数值,传址-地址)。传址实际是传值方式的一个特例,本质还是传值,只是此时传递的是一个地址数据值。不使用函数(除main外)main(){intn1,n2,n3,nmax;scanf(“%d%d%d”,&n1,&n2,&n3);if(n1n2)nmax=n1;elsenmax=n2;if(n3nmax)nmax=n3;printf(“max=%d\n”nmax);}使用函数externintmax(int,int,int);main(){intn1,n2,n3,nmax;scanf(“%d%d%d”,&n1,&n2,&n3);nmax=max(n1,n2,n3);printf(“max=%d\n“,nmax);}intmax(intx,inty,intz){intm;if(xy)m=x;elsem=y;if(zm)m=z;returnm;}函数定义像调用库函数一样调用(3)系统分配给实参、形参的内存单元是不同的,也就是说即使在函数中修改了形参的值,也不会影响实参的值。对于传值,即使函数中修改了形参的值,也不会影响实参的值。对于传址,即使函数中修改了形参的值,也不会影响实参的值。但是,注意:不会影响实参的值,不等于不影响实参指向的数据。传址与传值一样不能通过参数返回数据,但因为传递的是地址,那么就可能通过实参参数所指向的空间间接返回数值。(4)两种参数传递方式中,实参可以是变量、常量、表达式;形参一般是变量,要求两者类型相同或赋值兼容。7、3、2函数的返回值C语言可以从函数(被调用函数)返回值给调用函数(这与数学函数相当类似)。在函数内是通过return语句返回值的。使用return语句能够返回一个值或不返回值(此时函数类型是void)。`Return语句的格式:Return[表达式];或return(表达式);说明:(1)函数的类型就是返回值的类型,return语句中表达式的类型应该与函数类型一致。如果不一致,以函数类型为准(赋值转化)。(2)函数类型省略,默认为int。(3)如果函数没有返回值,函数类型应当说明为void(无类型)。7、4函数的调用7、4、1函数调用的一般方法函数名([实参表列])[;]说明:(1)无参函数调用没有参数,但是“()”不能省略,有参函数若包含多个参数,各参数用“,”分隔,实参参数个数与形参参数个数相同,类型一致或赋值兼容。(2)函数调用可以出现的位置以单独语句形式调用(注意后面要加一个分号,构成语句)。以语句形式调用的函数可以有返回值,也可以没有返回值。例如:printf(“max=%d”,nmax);swap(x,y);puts(s);在表达式中调用(后面没有分号)。在表达式中的函数调用必须有返回值。例如:if(strcmp(s1,s2)0)……//函数调用strcmp()在关系表达式中。nmax=max(n1,n2,n3);//函数调用max()在赋值表达式中,“;”是赋值表达式作为语句时加的,不是max函数调用的。fun1(fun2());//函数调用fun2()在函数调用表达式fun1()中。函数调用fun2()的返回值作为fun1的参数。7、4、2函数调用时数据的传递(函数之间的通讯)函数是相对独立的,但是不是孤立的,它们通过调用时1)参数传递和2)函数的返回值3)全局变量(后面介绍)来相互联系。7、4、3函数的声明函数定义的位置可以1)在调用它的函数之前,也可以2)在调用它的函数之后,甚至位于3)其它的源程序模块中。函数定义位置在前,函数调用在后,不必声明,编译程序产生正确的调用格式。函数定义在调用它的函数之后或者函数在其它源程序模块中,且函数类型不是整型,这时,为了使编译程序产生正确的调用格式,可以在函数使用前对函数进行声明。这样不管函数在什么位置,编译程序都能产生正确的调用格式。函数声明的格式:函数类型函数名([参数类型][,…,[参数类型]]);C语言的库函数就是位于其它模块的函数,为了正确调用,C编译系统提供了相应的.h文件。.h文件内许多都是函数声明,当源程序要使用库函数时,就应当包含相应的头文件。课后作业:7.17.2
本文标题:教案C语言9
链接地址:https://www.777doc.com/doc-2421244 .html