第3章 函数.ppt
《第3章 函数.ppt》由会员分享,可在线阅读,更多相关《第3章 函数.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程主讲人:第3章 函数中国铁道出版社中国铁道出版社张思民等主编张思民等主编C+C+语言程序设计语言程序设计第第 3 章函章函 数数本 章 内 容n函数模板的定义n模板函数n3.4 变量的作用域和存储类型n3.4.1 变量的作用域n3.4.2 变量的存储类型n3.4.3 外部变量n3.5 随机函数n3.6 函数重载n本章小结n3.1 函数定义n3.1.1 函数的分类n3.1.2 函数的定义n3.2 函数的调用n3.2.1 函数调用的语法形式n3.2.2 函数调用的过程n3.2.3 函数的传值调用n3.2.4 函数的引用调用n3.2.5 函数的嵌套调用n3.2.6 函数的递归调用n3.3 函数模
2、板3.1函数定义函数定义3.1.1 函数的分类函数的分类在C+ 语言中,函数分为两种:系统库函数和自定义函数。3.1.2 函数的定义函数的定义1、函数的定义、函数的定义返回类型 函数名(数据类型1 参数1,数据类型2 参数2,) (函数变量定义);(函数功能实现);(函数返回值);函数体函数体函数头函数头n 返回类型可以是基本数据类型或用户自定义的数据类型,它是函数体中通过 return 语句返回值的数据类型,也称为该函数的类型。当该函数为无返回值时,需要用 void 作函数的类型。n 函数名是由用户定义的标识符。函数名后面有一对小括号,如果括号里面是空的,这样的函数就称为无参函数;如果括号里
3、面至少有一个参数(称为形式参数,简称形参),则称该函数为有参函数。n 用一对大括号括起来的语句构成函数体,完成函数功能的具体实现。函数体一般由3部分组成:第一部分为定义函数所需的变量。函数内部定义的变量称为局部变量;第二部分完成函数功能的具体实现;第三部分由return 语句返回函数的结果。n 函数不允许嵌套定义,即不允许一个函数的定义放在另一个函数的定义中。【例3-1】无参函数实例。1 #include 2using namespace std;3 void hello()4 5 cout ”Hello,Lets study the C+ language. n”;6 函数说明函数说明:n第
4、3行是函数头的定义,函数类型为void型,表明函数无返回值,函数名为hello。函数名后面的括号中没有参数,表明该函数无返回值。n第4至6行是函数体,它的功能是输出“Hello,Lets study the C+ language.”字符串。定义函数头,函数名为hello,无参数,无返回值。函数体2、函数的返回值、函数的返回值n 在函数定义中,函数的类型是该函数返回值的数据类型。 return return 表达式表达式该语句的功能是将函数要输出的信息反馈给主调函数。【例3-2】有参函数实例。编写函数, 求1 + 2 + 3 + + n的和。1int mysum(int n)23int i,
5、s = 0;4for(i = 1; i y) return x;4 else return y;5 3、函数原型的声明、函数原型的声明n 在C+ 程序中,函数使用前需要先声明。这种声明函数的语句称为函数原型声明。函数原型声明的形式如下:返回类型返回类型 函数名函数名( (数据类型数据类型1 1 参数参数1 1,数据类型,数据类型2 2 参数参数2 2, );声明函数原型的形式与定义函数头基本相同,但函数原型声明是一条语句,要以分号结尾,而函数定义中的函数头末尾是没有分号的。例如:n void hello( );n int mysum(int n);n 在实际使用函数时,如果函数定义在先,函数调
6、用在后,调用前可以不必声明。但如果函数定义在后,函数调用在先,调用前必须先声明函数原型。3.2函数的调用函数的调用3.2.1 函数调用的语法形式函数调用的语法形式n 函数调用的语句形式如下:n 一个函数在被调用语句中,其参数称为实际参数。实际参数简称为实参,函数调用中的实参不需要加数据类型,实参的个数、类型、顺序要和函数定义时的形参一一对应。函数名(实际参数函数名(实际参数1, 实际参数实际参数2, , 实际参数实际参数n););n 定义有参函数时,形式参数并没有具体数据值,在被主调函数调用时,主调函数也必须给出具体数据(实参),将实参值依次传递给相应的形参。 n C+程序的运行总是从main
7、()开始,main()函数又称之为主函数,它可以调用任何其他的函数,但不允许被其他函数调用。n 除了main()函数以外,其它任何函数的关系都是平等的,可以相互调用。【例3-4】调用max( )函数语句main( )函数定义max( )函数声明函数max( ),函数必须“先声明,后调用”1 #include 2 using namespace std;3 int max(int x, int y);4 void main()5 6 int a, b, m;7 cout a b;9 m = max(a, b); 10 cout “a,b 二个数中的较大数为:” m y) s = x;17 els
8、e s = y;18 return s;19 例例3-4#includeusing namespace std;int max(int x, int y);void main() int a,b; coutab; m=max(a, b); cout“a,b二个数中的较大者为二个数中的较大者为:”my) s=x; else s=y; return s;程序总是从主函数开始执行程序总是从主函数开始执行4 6 4 6 程序的入程序的入口点口点调用之前调用之前a4b6cinaba4b6调用开始调用开始实参实参形参形参xy46开辟开辟a4b6调用期间调用期间实参实参形参形参xy46s=xy?x:y;a4
9、b6调用完毕调用完毕实参实参形参形参xy46释放释放m=max(a, b);3.2.2 函数调用的过程函数调用的过程 以例3-4为例,当调用一个函数时,整个调用过程分为4步进行:n 第1步函数调用,并把实参的值传递给形参;n 第2步执行被调用函数max()的函数体,形参用所获得的数值进行运算;n 第3步通过return语句将被调用函数的运算结果输出给主调函数;n 第4步返回到主调函数的函数调用表达式位置,继续后续语句的执行。图3.2所示 函数的调用过程3.2.3 函数的传值调用函数的传值调用n 在C+语言中,调用有参函数时,是通过实参向形参传值的,按调用方式可分为传值调用和引用调用。图3.3
10、函数参数按值依次传递实实参参到到形形参参的的传传递递过过程程图3.4#include using namespace std;void swap(int a, int b) int temp; temp=a; a=b; b=temp;void main() int x=5,y=6; cout“a与与b交换之前交换之前”; count“x=”x“y=”yendl; swap(x,y); cout“a与与b交换之后交换之后”; count“x=”x“y=”yendl;调用:56a:b:56x:y:swap:56x:y:65a:b:temp例3-5 交换两个数程序入口点程序入口点56x:y:调用前:
11、调用结束调用结束:56x:y:3.2.4 函数的引用调用函数的引用调用1、引用的概念n 引用是已存在的变量的一个别名,对引用型变量的操作实际上就是对被引用变量的操作。n 定义一个引用型变量的语法形式如下:数据类型&引用变量名 = 被引用变量名;例如:例如: int a; int &ra = a; 定义引用变量ra,它是变量a的引用,a是被引用变量说明:n (1)“&”是引用运算符,注意与后面章节中的指针取址运算符区别。n (2)引用变量的数据类型应与被引用变量的类型相同。n (3)声明引用时,必须同时对其进行初始化。n (4)引用声明完毕后,相当于被引用变量名有两个名称,ra相当于a的别名(绰
12、号)。对ra的任何操作就是对a的操作。且不能再把该引用名作为其他变量名的别名。 n (5)声明一个引用,不是新定义了一个变量,它不占存储单元,系统也不给引用分配存储单元。n (6)引用运算符“&”仅在说明一个引用型变量时使用,引用型变量被说明之后,就不能再带“&”,只需直接使用其变量名。#include using namespace std;void swap(int &a, int &b) int temp; temp=a; a=b; b=temp;void main() int x=5,y=6; cout“a与与b交换之前交换之前”; count“x=”x“y=”yendl; swap(
13、x,y); cout“a与与b交换之后交换之后”; count“x=”x“y=”yendl;例例3-7 如何实现实参如何实现实参x,y的交换呢?的交换呢?xint &a=x;a说明:n &-引用运算符n 声明引用时必须同时对其进行初始化;n 声明一个引用不占内存单元;n 引用型变量在使用时直接使用其变量名。#include using namespace std;void swap(int &a, int &b) int temp; temp=a; a=b; b=temp;void main() int x=5,y=6; cout“a与与b交换之前交换之前”; count“x=”x“y=”ye
14、ndl; swap(x,y); cout“a与与b交换之后交换之后”; count“x=”x“y=”yendl;程序入口点程序入口点x56y调前:x65y返回:x56y调用:abx711y调用中:abtemp65int &a=x;int &b=y;n 函数调用中参数传递n 以简单变量作为形参n 以引用变量作为形参n 通过引用形参的方式可以返回多于一个的计算结果3.2.5 函数的嵌套调用函数的嵌套调用 嵌套调用nC+规定:函数定义不可嵌套,但可以嵌套调用函数#include using namespace std;void main() int n; long sum; long add(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 函数
限制150内