C++程序设计--第5章-函数ppt课件.ppt





《C++程序设计--第5章-函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《C++程序设计--第5章-函数ppt课件.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主讲:刘艳菊主讲:刘艳菊2008-2009-2 C+程序设计2本章内容提要:本章内容提要:函数概述函数概述内联函数内联函数带默认参数值的函数带默认参数值的函数函数重载函数重载作用域与存储类型作用域与存储类型系统函数系统函数C+C+语言程序设计语言程序设计2008-2009-2 C+程序设计函数函数函数函数#includeint square(int x)/函数定义函数定义 return x*x;void main() int x,y; coutx; y=square(x);/函数调用函数调用 coutsquare=yendl;注:注:C+C+源程序都是由若干个函数组成的,每个函数源程序都是由若
2、干个函数组成的,每个函数完成一定的功能。运行时,程序总是从主函数完成一定的功能。运行时,程序总是从主函数main()main()开始执行,其他函数由开始执行,其他函数由main()main()函数或别的函数调用函数或别的函数调用后执行,最后到后执行,最后到main()main()函数终止运行。函数终止运行。2008-2009-2 C+程序设计45.1 函数的定义与声明函数的定义与声明 函数是函数是C+程序的基本单元,是组成模块。程序的基本单元,是组成模块。一个一个C+程序是由若干个源程序文件构成的,而一个源程程序是由若干个源程序文件构成的,而一个源程序文件是由若干个函数构成。序文件是由若干个函
3、数构成。函数类型函数类型从用户的角度看,有两种不同的函数:从用户的角度看,有两种不同的函数:库函数库函数用户自定义函数用户自定义函数库函数也称标准函数,由库函数也称标准函数,由C+系统提供。系统提供。用户自定义函数则需要用户先定义,后使用。用户自定义函数则需要用户先定义,后使用。函数函数2008-2009-2 C+程序设计55.1.1函数的定义函数的定义函数的定义格式函数的定义格式定义函数的一般形式:定义函数的一般形式:函数返回值的数据类型标识符函数返回值的数据类型标识符 函数名(形式参数表及其类型)函数名(形式参数表及其类型)函数体函数体函数函数void display_larger( in
4、t x, int y) if (xy) coutThe larger is : yy) coutThe larger is : xn; else coutTwo values are equal. n;2008-2009-2 C+程序设计65.1.1函数的定义函数的定义在在C+中定义函数时注意:中定义函数时注意:函数的形参及类型说明要采用新的函数的形参及类型说明要采用新的ANSI标准,即必须放在标准,即必须放在函数名后面的括号内。函数名后面的括号内。当形参有多个时,必须用逗号隔开。当形参有多个时,必须用逗号隔开。如果函数是无参函数,括号也不能省略。如果函数是无参函数,括号也不能省略。所有的函数
5、都要先定义,后使用(调用)。所有的函数都要先定义,后使用(调用)。不能省略函数值的类型,必须表明该函数的函数值的类型,不能省略函数值的类型,必须表明该函数的函数值的类型,即使该函数没有返回值,也要注明函数值的类型为即使该函数没有返回值,也要注明函数值的类型为void。函数函数2008-2009-2 C+程序设计5.1.2 函数的声明函数的声明 函数声明也称函数模型或函数原型。函数声明也称函数模型或函数原型。函数声明的一般格式为:函数声明的一般格式为:函数类型名函数类型名 函数名(形式参数表);函数名(形式参数表);例如:设有一函数定义为例如:设有一函数定义为float fun(char a,
6、int b, float c) 函数体函数体函数函数则对则对fun函数的声明为:函数的声明为:float fun(char m, int n, float i);/末尾要加上分号末尾要加上分号2008-2009-2 C+程序设计5.1.2 函数的声明函数的声明 关于函数声明的几点说明:关于函数声明的几点说明:函数必须先声明(或定义)后使用。函数必须先声明(或定义)后使用。必须确保函数声明语句与函数调用表达式出现在同一个文必须确保函数声明语句与函数调用表达式出现在同一个文件中。件中。虽然函数声明与函数头相似,但是它们之间也有细微的差虽然函数声明与函数头相似,但是它们之间也有细微的差别。别。 如,
7、如,float fun(char, int, float);函数声明中当函数返回值类型为函数声明中当函数返回值类型为int或或char时函数类型可以时函数类型可以省略,一般情况下不能省略函数类型。省略,一般情况下不能省略函数类型。函数声明中形参的次序不能写错。函数声明中形参的次序不能写错。函数定义在调用前,函数声明可以省略。函数定义在调用前,函数声明可以省略。函数函数可以把例可以把例5.1改写为如下形式:改写为如下形式:#includeint square(int x);/声明语句声明语句void main() int x,y; coutx; y=square(x);/调用语句调用语句 cou
8、tsquare=yendl;int square(int x)/函数定义函数定义 return x*x;2008-2009-2 C+程序设计9函数的定义与声明的区别函数的定义与声明的区别函数的定义与声明的区别函数的定义与声明的区别函数的函数的“定义定义”是一个函数功能的确立,包括指定函数名,是一个函数功能的确立,包括指定函数名,函数返回值的类型,形参及其类型,函数体等,它是一个函数返回值的类型,形参及其类型,函数体等,它是一个完整的、独立的函数单位。完整的、独立的函数单位。函数的函数的“声明声明”则只是对已经定义好的函数的接口进行的则只是对已经定义好的函数的接口进行的说明,它包括函数名,函数类
9、型,形参的类型。不包括形说明,它包括函数名,函数类型,形参的类型。不包括形参名和函数体。参名和函数体。对函数进行声明的作用是告诉编译系统,在本程序中将要对函数进行声明的作用是告诉编译系统,在本程序中将要用到的函数是什么类型,参数的个数和类型,以便在主调用到的函数是什么类型,参数的个数和类型,以便在主调函数中正确使用函数。函数中正确使用函数。函数函数2008-2009-2 C+程序设计105.2函数的调用函数的调用 调用函数调用函数所谓调用函数是指在程序中使用了该函数。所谓调用函数是指在程序中使用了该函数。函数调用时,函数调用时,中断中断现行函数(主调用函数),程序的执行现行函数(主调用函数),
10、程序的执行流程转向被调用函数的入口。开始执行被调函数。遇到流程转向被调用函数的入口。开始执行被调函数。遇到return或或返回主调函数。返回主调函数。相关的概念相关的概念主调函数、被调函数、调用点主调函数、被调函数、调用点函数调用的格式函数调用的格式函数名(实参表)函数名(实参表)说明说明如果调用的是无参函数,则实参表可略去,但函数的括号不能省。如果调用的是无参函数,则实参表可略去,但函数的括号不能省。如果实参表中有多个参数,参数之间用逗号隔开,实参的类型、个如果实参表中有多个参数,参数之间用逗号隔开,实参的类型、个数应与形参一一对应。数应与形参一一对应。函数函数语句语句1,f1();fn()
11、;结尾语句结尾语句main( )程序程序开始点开始点程序程序结束点结束点f1_1();returnf1( )fn_1();returnfn( )f1_1( )fn_1( )2008-2009-2 C+程序设计111.形参和实参形参和实参形式参数和实际参数(形参和实参)形式参数和实际参数(形参和实参)在调用函数时,大多数情况下,主调函数和被调函数之间在调用函数时,大多数情况下,主调函数和被调函数之间有数据传递关系。有数据传递关系。而函数之间的数据传递途径之一就是靠函数的参数进行的。而函数之间的数据传递途径之一就是靠函数的参数进行的。在定义函数时,函数名后面括号内的变量名为在定义函数时,函数名后面
12、括号内的变量名为“形式参数形式参数”(形参)。(形参)。在调用函数时,函数名后面括号内的表达式为在调用函数时,函数名后面括号内的表达式为“实际参数实际参数”(实参)。(实参)。实参与形参实参与形参个数个数相等,相等,类型类型一致,按一致,按顺序顺序一一对应。用实一一对应。用实际参数向形式参数传递数据。际参数向形式参数传递数据。函数函数2008-2009-2 C+程序设计121.形参和实参形参和实参举例举例函数函数#include int max(int, int);void main() int a,b,c; cinab; c=max(a,b); coutmax is cy?x:y; retu
13、rn z;实参实参形参形参2008-2009-2 C+程序设计131.形参和实参形参和实参关于形参和实参的几点说明关于形参和实参的几点说明实参可以是变量、常量、或表达式,但必须有确定的值。实参可以是变量、常量、或表达式,但必须有确定的值。而形参必须是变量。而形参必须是变量。形参变量,只有存在发生函数调用时,形参才被分配存储形参变量,只有存在发生函数调用时,形参才被分配存储单元,在调用结束时,形参所占的内存单元被释放。单元,在调用结束时,形参所占的内存单元被释放。实参与形参的类型必须一致,否则会发生实参与形参的类型必须一致,否则会发生“类型不匹配类型不匹配”的错误。的错误。实参对形参的数据传递是
14、实参对形参的数据传递是“值传递值传递”,即单向传递。,即单向传递。由实参把数据传给形参,并且存储单元与形参是不同的单元。由实参把数据传给形参,并且存储单元与形参是不同的单元。调用结束后,形参单元被释放,而实参单元保留并维持原值。调用结束后,形参单元被释放,而实参单元保留并维持原值。 函数函数2008-2009-2 C+程序设计142.函数的返回值函数的返回值函数的返回值是通过函数中的函数的返回值是通过函数中的return语句语句“返回返回”的。的。return语句的格式为:语句的格式为:return(表达式表达式);或或return 表达式;表达式;return语句的功能有两个:语句的功能有两
15、个:强制程序执行的流程从被调函数返回到主调函数。强制程序执行的流程从被调函数返回到主调函数。给主调函数带回一个确定的函数值。给主调函数带回一个确定的函数值。举例举例函数函数int max(int a,int b) return(ab?a:b);2008-2009-2 C+程序设计152.函数的返回值函数的返回值函数返回值函数返回值的类型的类型函数返回值的类型就是在定义函数时的函数返回值的类型就是在定义函数时的函数的函数的类型。在定类型。在定义函数时,义函数时,函数的函数的类型和类型和return语句中的表达式类型不一语句中的表达式类型不一致时,则以函数类型为准致时,则以函数类型为准。如果被调用
16、函数中没有如果被调用函数中没有return语句,为了明确表示函数语句,为了明确表示函数“不返回值不返回值”,要用,要用void定义无类型定义无类型。举例举例这样系统就保证不使函数带回任何值。这样系统就保证不使函数带回任何值。函数函数void print() printf(c language);2008-2009-2 C+程序设计163.函数调用的形式函数调用的形式函数通过下列三种方式完成函数调用:函数通过下列三种方式完成函数调用:函数调用语句函数调用语句在一个函数调用的后面加上在一个函数调用的后面加上“;”作为一条语句。如:作为一条语句。如:printf();函数表达式函数表达式即函数出现在
17、一个表达式中,这时要求函数带回一个确定的值以参即函数出现在一个表达式中,这时要求函数带回一个确定的值以参加表达式的运算。如:加表达式的运算。如:c=2*max(a,b);函数参数函数参数以函数的调用作为一个函数的实参。以函数的调用作为一个函数的实参。 如:如:m=max(a,max(b,c);函数函数2008-2009-2 C+程序设计4.函数的调用方式函数的调用方式一个函数被定义后就是为了将来对其调用。调用函数一个函数被定义后就是为了将来对其调用。调用函数是实现函数功能的手段。是实现函数功能的手段。正确的数据传递是正确使用函数的前提,正确的数据传递是正确使用函数的前提,C+语言采语言采用函数
18、的用函数的形式参数形式参数(形参形参)和和实际参数实际参数(实参实参)实现函数实现函数间的数据传递。间的数据传递。C+中函数的调用方式:中函数的调用方式:赋值调用赋值调用传递变量值的传值调用传递变量值的传值调用传递变量地址值的传址调用传递变量地址值的传址调用引用调用引用调用2008-2009-2 C+程序设计main() int a,b,c; cinab; c=max(a,b); coutMax is:y?x:y; return(z);4.函数的调用方式函数的调用方式例例 比较两个数并输出大者比较两个数并输出大者c=max(a,b); max(int x, int y) int z; z=xy
19、?x:y; return(z); 形参形参实参实参2008-2009-2 C+程序设计(1)函数的传值调用函数的传值调用也称为值传递方式也称为值传递方式方式:方式:函数调用时函数调用时,为形参分配单元为形参分配单元,并将实参的值复制到形参中;并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值调用结束,形参单元被释放,实参单元仍保留并维持原值特点:特点:形参与实参占用不同的内存单元形参与实参占用不同的内存单元单向传递单向传递实参可以是常量、变量或表达式,但必须有确定的值。实参可以是常量、变量或表达式,但必须有确定的值。2008-2009-2 C+程序设计例例5.2问题问
20、题使用传值调用方式使用传值调用方式完成两整数交换。完成两整数交换。#includevoid change(int a,int b)int temp;temp=a;a=b;b=temp;couta=a, ”b=bendl;void main()int x=0; int y=1;change(x,y);coutx=x, y=yendl;a=1,b=0 x=0,y=12008-2009-2 C+程序设计值传递调用演示值传递调用演示711x:y:调用前:调用前:调用结束:调用结束:711实参实参x:实参实参y:调用:调用:711形参形参a:形参形参b:711实参实参x:实参实参y:change:711
21、实参实参x:实参实参y:117形参形参a:形参形参b:temp2008-2009-2 C+程序设计(2)函数的传址调用函数的传址调用调用函数的实参地址值,被调用函数的形参用指针。调用函数的实参地址值,被调用函数的形参用指针。调用时系统将实参的地址值赋给对应的形参指针,使调用时系统将实参的地址值赋给对应的形参指针,使形参指针指向实参变量。形参指针指向实参变量。传址调用的特点是可以通过改变形参所指向的变量值传址调用的特点是可以通过改变形参所指向的变量值来影响实参。来影响实参。2008-2009-2 C+程序设计例例5.3问题问题使用传址调用方式使用传址调用方式完成两整数交换。完成两整数交换。#in
22、cludevoid change1(int *a,int *b)int temp;temp=*a;*a=*b;*b=temp;couta=*a, b=*bendl; void main()int x=0; int y=1;change1(&x,&y);coutx=x, y=yendl;a=1,b=0 x=1,y=02008-2009-2 C+程序设计址传递调用演示址传递调用演示59a:b:调用前:调用前:调用结束:调用结束:95实参实参x:实参实参y:调用:调用:ab形参形参a:形参形参b:59实参实参x:实参实参y:change:59实参实参x:实参实参y:59形参形参*a(a):形参形参*
23、b(b):temp2008-2009-2 C+程序设计(3)函数的引用调用函数的引用调用在函数定义时,函数的参数(在函数定义时,函数的参数(形参形参)可以说明为引用类型,)可以说明为引用类型,这样在函数的调用过程中,实参与形参的结合就属于引用调这样在函数的调用过程中,实参与形参的结合就属于引用调用。用。引用主要用于函数的引用主要用于函数的形参形参和和返回值返回值。对形参引用的改变,实质就是直接地通过引用(对形参引用的改变,实质就是直接地通过引用(实参的别名实参的别名)来改变)来改变实参的变量值。实参的变量值。这种调用也起到了这种调用也起到了传址调用传址调用的作用,但更直接、方便。的作用,但更直
24、接、方便。注意:注意:引用调用方式中,实参用引用调用方式中,实参用变量名变量名,形参用,形参用引用引用,调用时将实参的变量,调用时将实参的变量名赋给对应的形参引用。名赋给对应的形参引用。在被调用函数中,改变引用的值就直接在被调用函数中,改变引用的值就直接改变了对应的实参值改变了对应的实参值。尽量避免使用传址方式来传递参数。尽量避免使用传址方式来传递参数。2008-2009-2 C+程序设计例例5.4问题问题使用引用调用方式使用引用调用方式完成两整数交换。完成两整数交换。#includevoid change2(int &a,int &b)int temp;temp=a;a=b;b=temp;c
25、outa=a, b=bendl;void main()int x=0; int y=1;change2(x,y);coutx=x,y=yendl;a=1,b=0 x=1,y=02008-2009-2 C+程序设计5.函数的参数函数的参数(1)设置函数参数的默认值设置函数参数的默认值C中,允许在函数的说明或定义时给一个或多个中,允许在函数的说明或定义时给一个或多个参数指定默认值。但是,参数指定默认值。但是,要求在一个指定了默认值的要求在一个指定了默认值的参数右边,不能出现没有指定默认值的参数。参数右边,不能出现没有指定默认值的参数。int add_int(int x,int y=10);在函数调
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 函数 ppt 课件

限制150内