预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共46页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章函数第4章函数函数的声明4.1函数的定义和声明4.1函数的定义和声明4.1函数的定义和声明4.1函数的定义和声明在C++中,函数原型声明原则如下: (1)如果函数定义在先,调用在后,调用前可以不必声明;如果函数定义在后,调用在先,调用前必须声明。 (2)在程序设计中,为了使程序设计的逻辑结构清晰,一般将主要的函数放在程序的起始位置声明,这样也起到了列函数目录的作用。 声明函数原型的形式如下: 例如: intmax(intx,inty); intmax(int,int);函数调用的一般形式为: 各实际参数表中的实际参数应与形参表中的形参一一对应,即个数相等且对应参数的数据类型相同。 函数调用是一个表达式,函数名连同括号是函数调用运算符。表达式的值就是被调函数的返回值,它的类型就是函数定义中指定的函数返回值的类型,即函数的类型。 如果函数的返回值为void,说明该函数没有返回值。 例如: cout<<max(a,b)<<endl;当调用一个函数时,整个调用过程分为三步进行: 第一步:函数调用;①将函数调用语句下一条语句的地址保存在一种称为“栈”的内存中空间中,以便函数调用完后返回。将数据放到栈空间中的过程称为压栈。 ②对实参表从后向前,依次计算出实参表达式的值,并将值压栈。 ③转跳到函数体处。 第二步:函数体执行,即逐条运行函数体中语句的过程。 ④如果函数中还定义了变量,将变量压栈。 ⑤将每一个形参以栈中对应的实参值取代,执行函数的功能体。 ⑥将函数体中的变量、保存在栈中的实参值,依次从栈中取出,以释放栈空间。从栈中取出数据称为出栈,x出栈用pop(x)表示。 第三步:返回,即返回到函数调用表达式的位置。 ⑦返回过程执行的是函数体中的return语句。4.2.2函数调用的执行过程4.2.3函数参数的按值传递4.2.3函数参数的按值传递4.2.4嵌套调用intmin(intx,inty,intz) { intt; t=x<y?x:y; return(t<z?t:z); } intdif(intx,inty,intz) { returnmax(x,y,z)-min(x,y,z); } voidmain() { inta,b,c; cin>>a>>b>>c; cout<<"Max-Min="<<dif(a,b,c)<<endl; }在调用一个函数的过程中又直接或间接地调用该函数本身的这一现象,叫做函数的递归调用。 1(n=0) n!= n(n-1)!(n>0) 递归可以分为直接递归调用和间接递归调用。 直接递归调用:是在调用函数的过程中又调用该函数本身;间接递归调用:是在调用f1()函数的过程中调用f2()函数,而f2()中又需要调用f1()。递归函数设计的一般形式是:4.2.4递归调用4.2.4递归调用4.2.4递归调用4.2.4递归调用分析: 将n个盘子从A柱移到C柱可分解为以下3步:4.2.4递归调用4.2.4递归调用内联函数的定义形式如下:4.3内联函数4.3内联函数例如:4.4带默认形参值的函数4.4带默认形参值的函数4.4带默认形参值的函数4.4带默认形参值的函数4.5函数重载/****************************** *p4_7.cpp* *函数的重载* *******************************/ #include<iostream> usingnamespacestd; intadd(intx,inty) { cout<<"(int,int)\t"; returnx+y; } doubleadd(doublex,doubley) { cout<<"(double,double)\t"; returnx+y; } intadd(intx,doubley) { cout<<"(int,double)\t"; returnint(x+y); }doubleadd(doublex,inty) { cout<<"(double,int)\t"; returnx+y; } voidmain() { cout<<add(9,8)<<endl; cout<<add(9.0,8.0)<<endl; cout<<add(9,8.0)<<endl; cout<<add(9.0,8)<<endl; }4.5函数重载4.5函数重载4.6函数模板4.6函数模板4.6函数模板4.6函数模板4.6函数模板4.7C++系统函数C式头文件4.7C++系统函数