欢迎来到天天文库
浏览记录
ID:46376563
大小:756.50 KB
页数:91页
时间:2019-11-23
《第5章-函数与预处理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章函数与预处理5.1函数的定义5.2函数的调用5.3指针与函数5.4函数的嵌套5.5函数的递归5.6内联函数和重载函数5.7带默认形参值的函数5.8作用域与生命期5.9编译预处理9/19/20211Question?什么是函数?为什么要使用函数?9/19/202125.1函数的定义函数的概念函数是一个能完成某一独立功能的程序模块函数的作用把一个复杂的程序分解成若干个功能相对独立的小模块避免代码的重复,优化程序结构,提高程序的开发效率9/19/20213函数的定义一般格式合法标识符函数返回值类型缺省int型无返回值void函数体数据类型函数名(形式参数列表)
2、{说明部分语句部分}例有参函数intmax(intx,inty){intz;z=x>y?x:y;return(z);}例有参函数intmax(intx,y){intz;z=x>y?x:y;return(z);}例空函数dummy(){}函数体为空例无参函数printstar(){cout<<“**********”;}或printstar(void){cout<<“**********”;}9/19/20214函数的返回值返回语句形式:return(表达式);或return表达式;或return;功能:使程序控制从被调用函数返回到调用函数中,同时把返回
3、值(只能有一个)带给调用函数说明:函数中可有多个return语句,但每次调用只能执行一个若无return语句,遇}时,自动返回调用函数若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换void型函数可无return语句例无返回值函数voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}9/19/20215例函数返回值类型转换#includemax(floatx,floaty){floatz;z=x>y?x:y;return(z);}voidmain()
4、{floata,b;intc;cin>>a>>b;c=max(a,b);cout<<"Maxis"<5、数原型声明main是主函数,在程序中不被任何函数调用,不需要原型说明。9/19/202185.2函数的调用函数的调用形式函数名(实际参数表);说明:实参与形参个数相等,类型一致,按顺序一一对应实参可以是常量,变量,表达式,它们在调用前都应有确定的值对于无参函数,函数调用中的实参表为空,但圆括号不能省略9/19/202195.2函数的调用调用方式函数语句例:printstar();cout<<“Hello,World!”;函数表达式例:m=max(a,b)*2;函数参数例cout<6、2.3函数调用的过程main()调fun()结束fun()返回①②④⑥⑦保存:返回地址当前现场③恢复:主调程序现场返回地址⑤9/19/2021115.2.4参数传递机制C++中有两种不同的参数传递机制传值调用变量的值传递变量的地址值传递引用调用9/19/202112传值调用在函数被调用时才分配形参的存储单元。实参可以是常量、变量或表达式。实参类型必须与形参相符。传递时是传递参数值,即单向传递,形参值的修改并不会影响实参的值。9/19/202113传值调用示例XN被调函数:主调函数:32.5AD=power(A,3)2.53doublepower(doubleX7、,intN)9/19/202114例5.9输入两整数交换后输出(传递变量的值)#include"iostream.h"voidswap(intx,inty){intt=x;x=y;y=t;}voidmain(){inta=3;intb=4;cout<<"a="<8、19/202115例5.10输入两整数
5、数原型声明main是主函数,在程序中不被任何函数调用,不需要原型说明。9/19/202185.2函数的调用函数的调用形式函数名(实际参数表);说明:实参与形参个数相等,类型一致,按顺序一一对应实参可以是常量,变量,表达式,它们在调用前都应有确定的值对于无参函数,函数调用中的实参表为空,但圆括号不能省略9/19/202195.2函数的调用调用方式函数语句例:printstar();cout<<“Hello,World!”;函数表达式例:m=max(a,b)*2;函数参数例cout<6、2.3函数调用的过程main()调fun()结束fun()返回①②④⑥⑦保存:返回地址当前现场③恢复:主调程序现场返回地址⑤9/19/2021115.2.4参数传递机制C++中有两种不同的参数传递机制传值调用变量的值传递变量的地址值传递引用调用9/19/202112传值调用在函数被调用时才分配形参的存储单元。实参可以是常量、变量或表达式。实参类型必须与形参相符。传递时是传递参数值,即单向传递,形参值的修改并不会影响实参的值。9/19/202113传值调用示例XN被调函数:主调函数:32.5AD=power(A,3)2.53doublepower(doubleX7、,intN)9/19/202114例5.9输入两整数交换后输出(传递变量的值)#include"iostream.h"voidswap(intx,inty){intt=x;x=y;y=t;}voidmain(){inta=3;intb=4;cout<<"a="<8、19/202115例5.10输入两整数
6、2.3函数调用的过程main()调fun()结束fun()返回①②④⑥⑦保存:返回地址当前现场③恢复:主调程序现场返回地址⑤9/19/2021115.2.4参数传递机制C++中有两种不同的参数传递机制传值调用变量的值传递变量的地址值传递引用调用9/19/202112传值调用在函数被调用时才分配形参的存储单元。实参可以是常量、变量或表达式。实参类型必须与形参相符。传递时是传递参数值,即单向传递,形参值的修改并不会影响实参的值。9/19/202113传值调用示例XN被调函数:主调函数:32.5AD=power(A,3)2.53doublepower(doubleX
7、,intN)9/19/202114例5.9输入两整数交换后输出(传递变量的值)#include"iostream.h"voidswap(intx,inty){intt=x;x=y;y=t;}voidmain(){inta=3;intb=4;cout<<"a="<8、19/202115例5.10输入两整数
8、19/202115例5.10输入两整数
此文档下载收益归作者所有