资源描述:
《新编C程序设计教程 教学课件 作者 赵忠孝 第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章函数结构化程序设计是把任务的总目标分解为若干个子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。分解大任务到小模块,可以降低程序的复杂性,增强程序的可靠性和可重用性。程序就可以充分利用现有的模块,做积木式的扩展。C语言中的函数(function)相当于其它高级语言的子程序,是一个独立的程序模块。通过对函数的调用,实现对问题求解的功能。C语言不仅提供了极为丰富的库函数(,还允许用户建立自己定义的函数。C程序的全部工作都是由各式各样的函数完成的,所以C语言也称为函数式语言。6.1概述6.2函数定义的一般形式函数定义的一般形式6.3函数的参数和函数的值6.4函数的调用
2、6.5函数的嵌套调用6.6函数的递归调用6.7数组作为函数参数6.8内部变量与全局变量6.9变量的存储类别6.10内部函数和外部函数6.11多个源程序文件的编译和连接小结6.1函数的定义和调用6.1.1函数定义函数定义就是编写完成某一特定功能的程序段。在设计函数时,其功能尽可能的完备,与外部的联系尽可能的少。使函数具有高内聚,低耦合的特性。函数和变量一样要遵循“先定义后使用”的原则。1.函数定义的一般形式[类型标识符]函数名([形式参数表]){声明部分语句部分}【例6.1】定义一个求两个数中最大数的函数。intmax(inta,intb){intc;if(a>b)c=a;elsec
3、=b;returnc;}函数定义的说明:(1)其中类型说明符、函数名和形式参数表列称为函数头(函数首部)。(2)类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型。若返回值为整型,可以省略。例如:max(inta,intb){……}(3)函数名是由用户定义的标识符,要符合标识符的定义要求。函数标识符最好能反应函数的功能。(4)在形参表中给出的参数称为形式参数,简称为形参。形参可以是各种类型的变量。也可以没有形式参数,称为无参函数。虽然没有形式参数,但括号不可少。例如:voidHello(){printf("Hello,world");}(5)形参既然是变量,当然必
4、须给以类型说明。对形参变量类型的说明有两种格式:1)现代格式:类型说明放在形式参数之前,如例5-1中的形式参数;2)传统格式:类型说明放在函数头之后。例如:intmax(a,b)inta,b;{……}(6)在{}中的内容称为函数体,函数体内不允许在定义其他函数,即函数不允许嵌套定义。例如:(7)函数体内的类型说明,一般是对函数体内部所用到变量或要调用函数的说明,说明一般要在函数的开始处。若有:(8)return语句是把a(或b)的值作为函数值返回给主调函数。在有返回值的函数中,至少应有一个return语句。(9)在C程序中,一个函数的定义可以放在任意位置,既可放在主函数main之前
5、,也可放在main之后。intmax(inta,intb){inti;intmin(intx,inty){……}}是错误的。voidmain(){inta=1,b=2;a=a+b;intc;……}是错误的,变量定义要在函数开始处。【例6.2】函数定义和调用的应用。intmax(inta,intb)/*函数头:函数类型、函数名、形式参数*/{intc;if(a>b)c=a;elsec=b;returnc;/*函数返回值*/}voidmain(){intx,y,z;printf("inputtwonumbers:");scanf("%d%d",&x,&y);z=max(x,y);/
6、*函数调用,将实参x,y传递给形参a和b,返回值赋值给z*/printf("maxmum=%d",z);}1.函数调用的一般形式C语言中,函数调用的一般形式为:函数名(实际参数表)如:z=max(x,y);函数调用的使用说明:(1)对无参函数的调用无实际参数表,实际参数也简称为实参。(2)实际参数表中的参数可以是常数、变量或其它构造类型的数据及表达式。各实参之间用逗号分隔。(3)实参和形参个数和类型应一致或兼容,并一一对应。在例6.2中,函数max(inta,intb)有两个形参,在调用语句z=max(x,y)中也必须是两个实参。且x要和a类型相同或兼容,y要和b类型相同或兼容。(
7、4)实参的求值顺序在不同的系统中有不同的规定,有的自左至右,有的自右至左。在TurboC中是自右至左顺序求值。6.1.2函数的调用2.函数调用的一般执行过程。intmax(inta,intb){intc;if(a>b)c=a;elsec=b;returnc;}voidmain(){intx,y,z;printf("inputtwonumbers:");scanf("%d%d",&x,&y);z=max(x,y);printf("maxmum=%d",z);}①②③