第4章函数 函数(Function)是功能抽象的模块.ppt
《第4章函数 函数(Function)是功能抽象的模块.ppt》由会员分享,可在线阅读,更多相关《第4章函数 函数(Function)是功能抽象的模块.ppt(151页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010第4章 函数 函数(Function)是功能抽象的模块 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010第第4 4章章 函数函数 函数(函数(FunctionFunction)是功能抽象的模块)是功能抽象的模块 函数作用函数作用 实现一个功能;代码重用实现一个功能;代码重用 函数是函数是C+C+程序的重要组件程序的重要组件 一个
2、程序文件可以包含若干个函数,无论把一个程序划分为多少个程序模块,只能有一个main函数。中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010初步的认识1定义printstar和print_message函数时,括号内的void表示“没有参数函数”,即调用此函数时不必也不能给出参数。2程序的执行从main函数开始,调用其他函数后流程回到main函数,最后在main函数中结束整个程序的运行。3所有函数都是平行的,即在定义函数时是相互独立的。但函数不能嵌套定义,也即在定义一个函数过程中不能又定义另外一个函数,同时也不能把函数的定义部分写在主函数中。4main可以调用其他函数,各个函
3、数之间可以互相调用,但不能调用main函数。5main函数所调用的函数,前面必须进行声明。根据函数的形式:无参函数:调用函数时,不必给出参数有参函数:在调用函数时,要给出参数中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义由两部分组成:函数首部和函数操作描述4.1 4.1 4.1 4.1 函数的定义函数的定义函数的定义函数的定义/求圆柱体体积求圆柱体体积#includedoublevolume(doubleradius,doubleheight)return3.14*radius*radius*height;voidmain()doublevol,r,h;cinr
4、h;vol=volume(r,h);coutVolume=volendl;中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.1 4.1 4.1 4.1 函数的定义函数的定义函数的定义函数的定义/求圆柱体体积求圆柱体体积#includedouble volume(double radius,double height)return 3.14*radius*radius*height;voidmain()doublevol,r,h;cinrh;vol=volume(r,h);coutVolume=volendl;函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄
5、康有 2010 20104.1 4.1 4.1 4.1 函数的定义函数的定义函数的定义函数的定义/求圆柱体体积求圆柱体体积#includedouble volume(double radius,double height)return 3.14*radius*radius*height;voidmain()doublevol,r,h;cinrh;vol=volume(r,h);coutVolume=volendl;函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义形式函数定义形式 类型类型 函数名函数名(void)语句序列语句序列 4.2 4.2 函
6、数参数函数参数 3.1.1 3.1.1 函数定义函数定义类型类型 函数名函数名(形式参数表形式参数表)语句序列语句序列 无参函数有参函数形式参数和实际参数形式参数:在定义函数时函数名后面括号中的变量名称为形式参数实际参数:在主函数中调用一个函数时,函数后面括号中的参数中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义形式函数定义形式 类型类型 函数名函数名(形式参数表形式参数表)语句序列语句序列 4.2 4.2 函数定义和参数函数定义和参数 函数头函数接口,包括:3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2
7、010函数定义形式函数定义形式 类型类型类型类型 函数名函数名(形式参数表形式参数表)语句序列语句序列 4.2 4.2 函数定义和参数函数定义和参数 函数头函数接口,包括:函数返回值类型函数返回值类型函数返回值类型函数返回值类型 函数体中由return语句返回的值的类型。没有返回值其类型为void3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义形式函数定义形式 类型类型 函数名函数名函数名函数名(形式参数表形式参数表)语句序列语句序列 4.2 4.2 函数定义和参数函数定义和参数 函数头函数接口,包括:函数返回值类型 函数体
8、中由return语句返回的值的类型。没有返回值其类型为void函数名函数名函数名函数名 用户定义标识符3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义形式函数定义形式 类型类型 函数名函数名(形式参数表形式参数表形式参数表形式参数表)语句序列语句序列 4.2 4.2 函数定义和参数函数定义和参数函数头函数接口,包括:函数返回值类型 函数体中由return语句返回的值的类型。没有返回值其类型为void函数名 用户定义标识符形式参数表形式参数表形式参数表形式参数表 逗号分隔的参数说明表列,缺省形式参数时不 能省略圆括号。一般形式
9、为:类型 参数1 ,类型 参数2,类型 参数n3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010函数定义形式函数定义形式 4.2 4.2 函数定义函数定义 函数头函数接口类型类型 函数名函数名(形式参数表形式参数表)语句序列语句序列语句序列语句序列 函数体函数体函数体函数体函数的实现代码。3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-1 4.2 4.2 函数定义函数定义 voidprintmessage()coutHowdoyoudo!endl;3.1.1 3.1
10、.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-14.2 4.2 函数定义函数定义 voidprintmessage()coutHowdoyoudo!endl;函数返回值类型函数返回值类型无返回值无返回值3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-14.2 4.2 函数定义函数定义 voidprintmessage()coutHowdoyoudo!endl;函数名函数名3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010
11、2010例例3-14.2 4.2 函数定义函数定义 voidprintmessage()coutHowdoyoudo!endl;形式参数表形式参数表无参数无参数3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-14.2 4.2 函数定义函数定义 voidprintmessage()cout How do you do!y)returnx;elsereturny;3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-24.2 4.2 函数定义函数定义 doublem
12、ax(doublex,doubley)if(xy)returnx;elsereturny;函数返回值类型函数返回值类型3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-24.2 4.2 函数定义函数定义 doublemax(doublex,doubley)if(xy)returnx;elsereturny;函数名函数名3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-24.2 4.2 函数定义函数定义 doublemax(double x,double y)i
13、f(xy)returnx;elsereturny;形式参数表形式参数表3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-24.2 4.2 函数定义函数定义 doublemax(doublex,doubley)if(x y)return x;else return y;函数体函数体3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010例例3-24.2 4.2 函数定义函数定义 doublemax(doublex,doubley)if(xy)return x;elseretu
14、rn y;返回值返回值return 语句形式:return 表达式 或return(表达式)作用:返回函数值 不再执行后续语句,程序控制返回调用点 一个函数体内可以有多个return 语句 表达式返回值的类型与函数类型不相同时,自动强制转换成函数的类型3.1.1 3.1.1 函数定义函数定义中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010(1)在定义函数时指定的形参,在未出现函数调用时,他们并不占内存中的存储单元,(所以称他们为形式参数或虚拟参数),表示他们并不是实际存在的数据。只有在发生函数调用时,函数中的形参才被分配内存单元,以便接受从实参传来的数据。在调用结束后,形
15、参所占的内存单元也被释放。(2)实参可以是常量,变量或表达式。(3)定义函数时,必须在函数首部指定形参的类型。(4)实参与形参的类型应相同或赋值兼容。如果两者不相同,则按照赋值的规则进行转换。(5)实参变量对形参变量的数据传递时“值传递”,即单向传递,只有实参传给形参,而不能又形参传回给实参。中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.3 4.3 函数的返回值函数的返回值函数通过匿名对象返回结果值函数值的类型是匿名对象的类型return语句把表达式的值赋给匿名对象TypeTypeFunctionName()/statementsreturnreturnexpres
16、sionexpression;TypeType Objexpressionexpression TypeType 可以为各种C+基本数据类型、类类型,以及这些类型的指针或引用3.2.4 函数的返回类型中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010(1)函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个固定值带回主函数中。(2)函数值的类型。既然函数有返回值,这个值的类型由定义函数时指定函数值的类型来确定。(3)如果函数值的类型和return语句中的表达式的值不一致,则以函数类型为准,即函数类型决定返回值的类型。中山大学地球科学系中山大
17、学地球科学系 黄康有黄康有 2010 2010调用形式调用形式 函数名函数名(实际参数表列实际参数表列)4.4 4.4 函数的调用函数的调用3.1.2 3.1.2 函数调用函数调用如果调用无参函数,则“实际参数表列”可以没有,但括号不能省略。如果实参表列包括多个多个参数,则各参数间用逗号隔开。实参和形参的个数应该相等,类型匹配或者赋值兼容,顺序一一对应进行传递数据。中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010调用形式调用形式 函数名函数名函数名函数名(实际参数表实际参数表)4.4 4.4 函数的调用函数的调用函数名函数名函数名函数名 函数的入口地址函数的入口地址3.1
18、.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010调用形式调用形式 函数名函数名(实际参数表实际参数表实际参数表实际参数表)4.4 4.4 函数的调用函数的调用函数名函数名 函数的入口地址函数的入口地址实际参数表实际参数表实际参数表实际参数表 与形式参数必须在个数、类型、位置一一对应与形式参数必须在个数、类型、位置一一对应3.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4函数的调用按函数在语句中的作用来分,可以有以下3种函数调用方式:1函数语句:把函数调用单独作为一个语句,并
19、不要求函数带回一个值,只是要求函数完成一定的操作。printstar();2函数表达式:函数出现在一个表达式中,要求函数带回一个确定的值以参加表达式的运算。C=2*max(a,b)3函数参数:函数调用作为一个函数的实参。m=max(a,max(a,b);中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4 4.4 函数调用函数调用#includevoidprintmessage()coutHowdoyoudo!endl;voidmain()printmessage();例例3-13.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有
20、2010 20104.4 4.4 函数调用函数调用#includevoidprintmessage()coutHowdoyoudo!endl;voidmain()printmessage();函数调用语句函数调用语句例例3-13.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4 4.4 函数调用函数调用例例3-2#includedoublemax(doublex,doubley)if(xy)returnx;elsereturny;voidmain()doublea,b;cinab;doublem=max(a,b);coutmax(
21、m,3.5)endl;3.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4 4.4 函数调用函数调用例例3-2#includedoublemax(doublex,doubley)if(xy)returnx;elsereturny;voidmain()doublea,b;cinab;doublem=max(a,b);coutmax(m,3.5)endl;函数调用表达式函数调用表达式3.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4 4.4 函数调用函数调用例例3-2#
22、includedoublemax(doublex,doubley)if(xy)returnx;elsereturny;voidmain()doublea,b;cinab;doublem=max(a,b);coutmax(m,a+3.5)endl;coutmax(max(a,b)max(a,b),a+3.5a+3.5)endl;实际参数是表达式实际参数是表达式3.1.2 3.1.2 函数调用函数调用中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010(1)首先被调用的函数必须是已经存在的函数(是函数库或者用户自己定义的函数)(2)如果是使用库函数,一般还应该在本文件开头用#in
23、clude命令将有关头文件“包含”到本文件中来。例如,如果用到数学库函数,就用#include(3)如果使用用户自己定义的函数,该函数必须跟主函数在同一个程序单元中,如果位置在主函数之后,则必须在调用此函数之前对被调用函数之前进行声明。4.4.1 调用函数的前提(调用函数的声明)中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 2010定义函数和声明函数的区别定义:对函数功能的确立,包括指定函数名,函数类型,形参及其类型,函数体等。是一个完整的、独立的函数单位。声明:仅把函数的名字,函数类型及其形参的个数,类型和顺序通知编译系统。声明函数中可以不写形参名,而写形参的类型。如:#in
24、cludedoublevolume(double,double);voidmain()doublevol,r,h;cinrh;vol=volume(r,h);coutVolume=volendl;doublevolume(doubleradius,doubleheight)return3.14*radius*radius*height;中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4.2 4.4.2 函数原型函数原型函数原型的作用是告诉编译器有关函数的信息:函数的名字函数返回的数据类型函数要接受的参数个数、参数类型和参数的顺序编译器根据函数原型检查函数调用的正确性函
25、数原型的形式:类型 函数名(形式参数表);3.1.3 3.1.3 函数原型函数原型函数声明中也可以不写形参名,而只写形参的类型。例如:doublevolume(double,double);函数原型是函数原型是声明语句声明语句中山大学地球科学系中山大学地球科学系 黄康有黄康有 2010 20104.4.2 4.4.2 函数原型函数原型#includedoublemax(double,double);/函数原型函数原型voidmain()doublea,b,c,m1,m2;coutabc;m1=max(a,b);/函数调用函数调用m2=max(m1,c);coutMaximum=m2y)retu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 函数 函数Function是功能抽象的模块 Function 功能 抽象 模块
限制150内