《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数

上传人:E**** 文档编号:89399558 上传时间:2019-05-24 格式:PPT 页数:25 大小:145.50KB
返回 下载 相关 举报
《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数_第1页
第1页 / 共25页
《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数_第2页
第2页 / 共25页
《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数_第3页
第3页 / 共25页
《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数_第4页
第4页 / 共25页
《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数》由会员分享,可在线阅读,更多相关《《C++程序设计简明教程》-王晓东-电子教案 第3章 C++函数(25页珍藏版)》请在金锄头文库上搜索。

1、第3章 C+函数,3.1 函数基础 3.2 函数调用的方式 3.3 内联函数 3.4 带默认形参值的函数 3.5 函数重载 3.6 函数模板,3.1 函数基础,如果函数A调用了函数B,则约定把A称为主调函数,B称为被调函数。,函数定义,类型 函数名(形参列表) 变量声明语句 执行语句 如果要向主调函数返回值,则用return语句。 return(表达式);,函数原型,类型 函数名(形参列表); 1.如果被调函数在主调函数之前定义,可以不必声明。 2.如果被调函数将要被多个函数调用,则可以把函数声明语句写在程序的开始处。 3.函数声明时可以省略形参的名字,但是形参的类型不能省略。,函数调用,函数

2、名(实参列表); 1.括号内为实参。实参即实际参数,表示传递给被调函数的一些必要数据,实参之间用逗号隔开。 2.如果被调函数有返回值,则函数调用表达式的值就是返回值。,计算n!,#include int main() long fac(int n);/函数声明 int n; long s; cinn; s=fac(n);/函数调用 cout“s=“sendl; return(0); long fac(int n)/函数定义 long s; int i; for(i=1,s=1;i=n;i+) s*=i; return(s);/函数返回值 ,参数传递,实参与形参个数相等,类型尽量保持一致。实参向

3、形参传递数据时,从左向右,一一对应。,函数嵌套调用,递归调用,在函数的函数体内又出现直接或间接调用自身的语句,即函数在执行过程中调用自己的现象,称为递归调用。,递归调用计算n!,#include int main() long fac(int n);/函数声明 int n; long s; cinn; s=fac(n);/函数调用 coutn“!=“sendl; return(0); long fac(int n)/函数定义 long s; if(n=1) s=1; else s=n*fac(n-1);/递归调用 return(s);/函数返回值 ,递归调用的执行过程,3.2 函数调用的方式,

4、传值调用 调用时把实参的值从左至右,一一传递给各个形参。这种传递是单向的,形参的值发生变化,对实参毫无影响。,失败的交换,#include int main() void swap(int a,int b);/函数声明 int a,b; coutab; swap(a,b);/函数调用 cout“a=“a“,b=“bendl; return(0); void swap(int a,int b)/函数定义 int t;/定义中间变量 t=a; a=b; b=t; ,引用调用,#include #include void fun(int x,int ,引用参数传递,成功的交换,#include in

5、t main() void swap(int ,3.3 内联函数,内联函数在调用时并不发生通常的程序执行转移,而是把函数体插入到函数调用处。 inline 类型 函数名(形参列表) 变量声明语句 执行语句 ,案例,#include #include float get_area(float x) return x*x; int main() inline float get_area(float len);/内联函数,计算正方形的面积 float x,area; coutx; area=get_area(x);/调用内联函数,编译时此处被替换为函数体的语句 cout“正方形的面积是“setw(

6、4)setprecision(3)areaendl; return(0); ,3.4 带默认形参值的函数,允许事先为函数的形参设置默认值,如果在调用函数时不给出实参,就会自动使用相应的默认值来代替实参。例如: int fun(int x,int y=1); c=fun(3);/形参x的值是3,形参y的值是事先设置的默认值1,说明,1.应该从函数形参列表的最右边开始,设置默认形参值。 2.如果已有函数原型,则默认形参值只能在函数声明语句中设置。,案例,#include #include float get_volume(float x=1, float y=2, float z=3); int

7、main() cout“第一次函数调用:“ ; cout“长方体的体积是“get_volume(3,4,5)endl; cout“第二次函数调用:“ ; cout“长方体的体积是“get_volume(3,4)endl;/默认形参值 cout“第三次函数调用:“ ; cout“长方体的体积是“get_volume(3)endl;/默认形参值 cout“第四次函数调用:“ ; cout“长方体的体积是“get_volume()endl;/默认形参值 return(0); float get_volume(float x, float y, float z) float v; v=x*y*z; c

8、out“x=“setw(2)x“ y=“setw(2)y“ z=“setw(2)zendl; return(v); ,3.5 函数重载,允许功能相近的函数共同使用一个名字,这就是函数重载(function overload)。 int add(int x,int y); float add(float x,float y); float add(float x,float y,float z); C+编译器根据函数之间形参的类型、个数或者顺序的不同,有效地区分这些函数。,说明,如果只是函数返回值的类型不同,这样的函数是无法重载的。 只依靠普通形参和引用形参的差别,也是无法进行函数重载的。 如果

9、既有默认形参值,又有函数重载,应避免出现函数调用二义性的情况。例如: int add(int x,int y); int add(int x,int y,int z=1);,3.6 函数模板,程序员可以为功能相近、处理过程相同的一组函数,定义一个函数模板。发生实际的函数调用时,再生成具体的模板函数。 template 类型 函数名(形参列表) 变量声明语句 执行语句 ,函数模板计算两个数之和,#include template /函数模板 T add(T x,T y)/求两数之和,T是类型参数 T z; z=x+y; return(z); int main() int x1=1,y1(2); float x2=1.1,y2=2.2; cout(x2,y2)endl; return(0); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号