函数定义和函数调用.ppt
《函数定义和函数调用.ppt》由会员分享,可在线阅读,更多相关《函数定义和函数调用.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.2函数的声明和函数调用函数的声明和函数调用 1.函数定义和函数调用的区分函数定义和函数调用的区分l1)函数定义:)函数定义:要给出函数名、函数类型、形式参数、函要给出函数名、函数类型、形式参数、函数的实现过程(函数的定义性说明数的实现过程(函数的定义性说明),它是,它是一个完整的、独立的函数单位。一个完整的、独立的函数单位。2)函数声明函数声明只给出函数名、函数类型、形参类型(有只给出函数名、函数类型、形参类型(有时给出形参名时给出形参名)。没有给出函数实现的过。没有给出函数实现的过程描述。有时称为函数原型说明,一般程描述。有时称为函数原型说明,一般放在程序开头,描述本程序将要用到哪放在程
2、序开头,描述本程序将要用到哪些函数(函数的引用性说明)。些函数(函数的引用性说明)。3)设立函数的作用)设立函数的作用l提高程序的可读性(本程序使用到了哪些提高程序的可读性(本程序使用到了哪些函数)并且改善程序的结构;减少程序编函数)并且改善程序的结构;减少程序编写、调试的工作量,提高程序设计效率并写、调试的工作量,提高程序设计效率并较好地保障程序的正确性和可靠性;较好地保障程序的正确性和可靠性;l提供语法检查(在程序中对照函数原型,提供语法检查(在程序中对照函数原型,检查所属实际使用的函数的参数是否和检查所属实际使用的函数的参数是否和函数原型规定的参数类型想匹配,若不函数原型规定的参数类型想
3、匹配,若不匹配就自动转换为函数原型所规定的类匹配就自动转换为函数原型所规定的类型。型。C语言无此功能,语言无此功能,C才有)。才有)。例子:求用户输入的三个数中的最大者,演示函数例子:求用户输入的三个数中的最大者,演示函数的引用性声明。的引用性声明。#includefloatmax(float,float);/函数的引用性声明函数的引用性声明voidmain()floati,j,k;/用户输入的三个数用户输入的三个数floattemp;/临时最大者临时最大者coutijk;/找出最大数存放在找出最大数存放在temp中中temp=max(i,j);temp=max(temp,k);coutThe
4、maximumnumberistemp=y)z=x;elsez=y;returnz;2.函数的定义性说明函数的定义性说明(函数定义函数定义)1)含义:)含义:给出函数名、函数类型、形式参数、函数给出函数名、函数类型、形式参数、函数的实现过程(函数的定义性说明)。的实现过程(函数的定义性说明)。2)形式如下:)形式如下:类型类型函数名(形式参数表)函数名(形式参数表)语句序列语句序列3)相关术语)相关术语函数名函数类型函数名函数类型函数参数函数参数传递函数参数函数参数传递函数体函数体函数值的返回函数值的返回控制的转移控制的转移函数名函数名l为函数所起的名字为函数所起的名字,必须是一个有效的必须是
5、一个有效的C标识符(以字母或下划线开头、后接字标识符(以字母或下划线开头、后接字母或数字或下划线的字符序列),但不允母或数字或下划线的字符序列),但不允许使用许使用C的保留字作为函数名。的保留字作为函数名。l我们应该根据函数所完成的功能为函数我们应该根据函数所完成的功能为函数起一个有意义的名字。在书写函数名字起一个有意义的名字。在书写函数名字时应在后面加上一对圆括号以区别于其时应在后面加上一对圆括号以区别于其它变量或类型的名字。它变量或类型的名字。函数类型函数类型l函数类型是指函数返回值的类型,可以是函数类型是指函数返回值的类型,可以是基本数据类型,也可以是后面要讨论的复基本数据类型,也可以是
6、后面要讨论的复合数据类型,但不允许是数组类型或函数合数据类型,但不允许是数组类型或函数类型。类型。l函数定义时需注明函数类型。函数定义时需注明函数类型。lC语言缺省类型为语言缺省类型为int。lC继承继承C,但有些版本会不同,因此,但有些版本会不同,因此最好具体指定,如确实不需要指明类型,最好具体指定,如确实不需要指明类型,就采用就采用void类型(类型(空类型)。空类型)。函数参数函数参数l包括形式参数和实际参数包括形式参数和实际参数。l形式参数是用逗号分隔的变量说明列表,形式参数是用逗号分隔的变量说明列表,这些变量称为函数的形式参数,有时也简这些变量称为函数的形式参数,有时也简称为形参。称
7、为形参。形式参数用于接收从函数调用形式参数用于接收从函数调用程序传给这个函数的数据。程序传给这个函数的数据。l实际参数是用逗号分隔的表达式列表,实际参数是用逗号分隔的表达式列表,其中每一个表达式称为实际参数,有时其中每一个表达式称为实际参数,有时也简称为实参。也简称为实参。l在函数调用时,需要将实参的值传送给在函数调用时,需要将实参的值传送给对应位置的形式参数,因而要求实参个对应位置的形式参数,因而要求实参个数必须和形参个数相同(缺省参数或可数必须和形参个数相同(缺省参数或可变数目参数情况例外),并且实参的类变数目参数情况例外),并且实参的类型必须与对应的形参类型相匹配。型必须与对应的形参类型
8、相匹配。函数参数传递(两种情况)函数参数传递(两种情况)l主调函数调用被调函数时,函数执行所需主调函数调用被调函数时,函数执行所需的参数如何从主调函数传入到被调函数中的参数如何从主调函数传入到被调函数中去;去;l函数执行完后,所得到的执行结果如何传函数执行完后,所得到的执行结果如何传送回主调函数中送回主调函数中。l参数传递参数传递1实参形参实参形参(包括值的传递(传值);(包括值的传递(传值);地址的传递(传地址)地址的传递(传地址)l参数传递参数传递2执行结果主调函数执行结果主调函数形式形式:return表达式;表达式;或或return(表达式表达式);功能:计算出表达式的值并返回给主调功能
9、:计算出表达式的值并返回给主调函数,退出函数执行,把执行回归到主函数,退出函数执行,把执行回归到主调函数。调函数。l注意:注意:采用采用return只能返回一个值只能返回一个值如如returnx;不能用;不能用returnx,y;也不能用也不能用returnx;returny;。l参数传递参数传递3(可用于两者)(可用于两者)采用全局变量形式,但要注意有没有副作采用全局变量形式,但要注意有没有副作用(尽可能少用此形式)。用(尽可能少用此形式)。函数定义时的参数说明:在圆括号内说明,函数定义时的参数说明:在圆括号内说明,如果没有参数,也不能省去圆括号如果没有参数,也不能省去圆括号。l函数举例函数
10、举例intmax(intx,inty)/函数定义函数定义intmax(int,int);/函数原型函数原型voidmain()/没有具体参数没有具体参数函数体函数体l函数体是用花括号函数体是用花括号“”和和“”括住的括住的语句序列,分为说明部分和语句部分,用语句序列,分为说明部分和语句部分,用于描述这个函数所要执行的操作(即实现于描述这个函数所要执行的操作(即实现其功能的具体执行过程)。其功能的具体执行过程)。l函数体可以为空,但花括号不能省去。函数体可以为空,但花括号不能省去。如:如:intmax(intx,inty)函数值的返回及控制的转移:函数值的返回及控制的转移:return语句语句l
11、函数值的返回:函数值的返回:return表达式;表达式;这种形式只能返回一个值,若有多个值返这种形式只能返回一个值,若有多个值返回,只能考虑用数组指针等形式。回,只能考虑用数组指针等形式。l控制返回:控制返回:return表达式;表达式;/两者兼者(函数值返回及控制返回)两者兼者(函数值返回及控制返回)return;/控制返回控制返回若没有若没有return,遇到遇到“”也就默认也就默认“return”功能了功能了。3.内联函数与非内联函数内联函数与非内联函数1)内联函数定义形式:)内联函数定义形式:inline函数类型函数名(函数形参说明)函数类型函数名(函数形参说明)函数体函数体2)非内联
12、定义形式:)非内联定义形式:函数类型函数名(函数形参说明)函数类型函数名(函数形参说明)函数体函数体3)内联函数的调用形式:)内联函数的调用形式:l与非内联函数一样,但执行过程不一样。与非内联函数一样,但执行过程不一样。一般函数调用:通过控制转移来实现。其一般函数调用:通过控制转移来实现。其简化图如下:简化图如下:l内联函数调用:在编译时把内联函数的内联函数调用:在编译时把内联函数的函数体的代码直接函数体的代码直接COPY到主调函数中,到主调函数中,然后再进行编译。然后再进行编译。l从用户使用观念上仍属于函数调用形式;从用户使用观念上仍属于函数调用形式;但实际上属于程序代码的替换。但实际上属于
13、程序代码的替换。内联函数调用的例子如下:#include#includeinlinedoubleadd(doublex,doubley)/内联函数内联函数return(x+y);/函数体函数体voidmain()cout2+2=add(2.0,2.0)endl;cout2.2+3.14159=add(2.2,3.14159)endl;cout3.13+3.23=add(3.13,3.23)endl;getch();/等待输入,以观察结果等待输入,以观察结果编译预处理之后有等价程序:编译预处理之后有等价程序:voidmain()cout2+2=2.0+2.0endl;cout2.2+3.1415
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 定义 调用
限制150内