C++程序设计:第2讲 为什么使用函数_第1页
C++程序设计:第2讲 为什么使用函数_第2页
C++程序设计:第2讲 为什么使用函数_第3页
C++程序设计:第2讲 为什么使用函数_第4页
C++程序设计:第2讲 为什么使用函数_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++第2讲

为什么使用函数函数的使用过程函数调用堆栈内联函数默认实参函数重载函数模板C++第2讲-为什么使用函数1、分而治之 将复杂的问题变成系列简单的问题2、软件复用 同一代码可以,可在其他地方使用。3、避免重复代码 需时写上函数名可以,从而使程序易于调试C++第2讲

为什么使用函数函数的使用过程函数调用堆栈内联函数默认实参函数重载函数模板C++第2讲-函数调用过程main()函数相当于boss老板,老板叫某个员工worker去干件事,同时给worker基本条件,如基本材料或设计图纸。员工根据基本材料或设计图纸,去完成某件事,完事向老板汇报,事情办得如何。至于员工办事的细节,老板不必知道。当然员工也可以调用其他员工。C++第2讲

为什么使用函数函数的使用过程函数调用堆栈内联函数默认实参函数重载函数模板C++第2讲-函数调用堆栈C++第2讲

为什么使用函数函数的使用过程函数调用堆栈内联函数默认实参函数重载函数模板C++第2讲-函数调用堆栈当老板执行到d=root(a,b,c)时,将此条语句在内存的地址R1保存到堆栈中,同时将a,b,c的值保存起来,跳转到root()函数所在位置,执行该函数的首条语句。C++第2讲-函数调用堆栈当执行到“d=delta(a,b,c);”时,将此时内存地址R2保存到栈中,将a,b,c的值保存到栈中,跳转到delta()函数所在位置,执行其首条语句。C++第2讲-函数调用堆栈当将判别式的平方求出来后,从该栈顶取出R2值,执行“d=delta(a,b,c);”的后一条语句,即“if(d>=0){”。开始求平方根C++第2讲-函数调用堆栈求出平方根后,从该栈顶取出R1值,执行“d=root(a,b,c);”的后一条语句,即“cout<<"判别式的平方根:"<<d<<endl;”,并一直执行到最后。C++第2讲-内联函数函数调用因为出入栈,增加执行时间被执行函数的代码复制到调用处,每处有副本特别适合于代码很短的函数。C++第2讲-默认实参函数原型中给参数一个默认值,在调用该函数时,这些参数可以不给值。C++第2讲-引用变量、函数参数的引用传递引用变量intx=10;int&y=x;y=8;cout<<x<<endl;//输出结果为8函数参数的引用传递voidfunc(int&x){ x=6;}main(){ inta=2; func(a); cout<<a<<endl//输出结果是多少,为什么}函数参数的传值调用、传址调用、引用调用的对比C++第2讲-函数重载默认实参是指调用函数时所给实参少于形参数函数名称相同,只参数有所不同,如一个为整数,另一个为实数,第三个为char,函数功能相同或相似,可不同,但是相似或相同。编译器在检查函数时,根据调用给出的参数个数,参数数据类型、参数类型的顺序来选择的函数。函数签名:函数名、参数表。C++用函数签名来区别函数C++第2讲-函数重载C++第2讲-函数模板重载的函数之间,只要函数名相同,其他参数的个数、类型、参数的先后顺序不同。如果参数的个数不变,参数的次序不变,功能相同的,只需要写一个通用函数编译器会根据调用函数所使用的各参数类型,决定生成哪个版本的函数,此方法称为“函数模板”。C语言中宏定义define可实现,但编译器并不对宏定义进行类型检测。在预编译时直接将其展开,易错,考试点,也是广大学生的痛点,C++解决了这个痛点。如前面的例题中,除第4个重载函数是求数的2倍,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论