下载此文档

第3章 函数(3).ppt


文档分类: | 页数:约29页 举报非法文档有奖
1/29
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/29 下载此文档
文档列表 文档介绍
默认参数
//设置函数参数的默认值
void fun(int x=1,int y=2,int z=3)
{
cout<<"x="<<x<<","<<"y="<<y<<", "
<<"z="<<z<<endl;
}
int main( )
{
fun( );
fun(5);
fun(5,6);
fun(5,6,7);
return 0;
}
设置函数参数的默认值注意
默认值集中在参数的右边
int fun1(int a, int b=1, int c=2); 合法
int fun1(int a=1, int b, int c=2); 不合法
函数的嵌套调用
int b( )
{……}
int a( )
{ ……
y=b( )
……
}
int main( )
{……
x=a( )
……
}
C++语言的函数定义是相互平行和独立的。不能嵌套定义,但可嵌套调用。
main函数
调用a函数
结束
a函数
调用b函数
b函数









函数的嵌套调用示例
int gcd(int m, int n)
{
int u, v, t;
u=m>n?m:n;
v=m<n?m:n;
while(u%v!=0)
{ t=u%v;
u=v;
v=t;
}
return(v);
}
int gbs(int m, int n)
{
int k;
k=gcd(m,n);
return( m*n/k);
}
int main( )
{
int m, n;
cin >> m >> n ;
cout << “公倍数:”
<< gbs(m, n) << '\n';
return 0;
}
函数的嵌套调用示例
main函数
调用gbs函数
结束
gbs函数
调用gcd函数
gcd函数









上述程序的执行流程:
函数重载:完成不同功能的函数可以具有相同的函
数名。
函数的重载
两种类型:
参数类型不同的重载函数
参数个数不同的重载函数
参数类型不同的重载函数
int abs(int x) //求整数的绝对值
{ if(x<0) return(-x); else return(x); }
float abs(float x) //求 float型数据的绝对值
{ return( x>0 ? x : -x ); }
double abs(double x) //求 double型数据的绝对值
{ return( x>0 ? x : -x ); }
函数名一样,
参数类型不一样
参数个数不同的重载函数
#include <iostream>
using namespace std;
int max(int a,int b);
int max(int a,int b,int c);
int main( )
{ cout<<max(5,8)<<endl;
cout<<max(10,4,20)
<<endl;
return 0;
}
int max(int a,int b)
{ return (a>b?a:b);}
int max(int a, int b, int c)
{
int m=a;
if(b>m) m=b;
if(c>m) m=c;
return m;
}
编译器根据实参的个数
决定调用哪一个函数
相同的名字
内联函数
int a(int x )
{ ……
…...
……
}
int main( )
{……
y=a( x )
……
}
保护现场、
参数入栈
恢复现场
开销大:时间长
函数调用时
main函数
调用a函数
结束
a函数
调用b函数
b函数









定义内联函数
定义内联函数的目的:
在编译程序时,将函数代码直接插入到调用处,
减少函数调用次数,以空间换时间。
inline double max(double x, double y)
{ return( x>y?x:y ); }
int main( )
{ cout << "Input a, b and c:" ;
double a, b, c ;
cin >> a >> b >> c;
a=max(a, b);
a=max(a, c);
cout << "最大值是:"<< a << '\n' ;
}
编译时,将 max( )函数的实现代码重复插入两次,避免函数调用,节省程序的执行时间。
不允许出现循环语句、switch语

第3章 函数(3) 来自淘豆网www.taodocs.com转载请标明出处.