电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++面向对象程序设计 教学课件 ppt 作者 李兰_ 第3章

229页
  • 卖家[上传人]:E****
  • 文档编号:89343159
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:766KB
  • / 229 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、3.1 函数的定义和声明 (Function Definition and Declaration) 3.2 函数的调用与参数传递 (Function Call and Parameter Passing) 3.3 内联函数(Inline Functions) 3.4 函数重载(Function Overloading) 3.5 带默认形参值的函数 (Function with Default Arguments) 3.6 作用域与生存期(Scopes and Lifetime) 3.7 多文件结构(Multi-File Structure) 3.8 常见编程错误(Common Programming Errors) 本章小结(Chapter Summary) 习题3(Exercises 3),一个C+ 程序可由一个或多个源程序文件组成。一个源程序文件可由一个或多个函数组成。函数是构成C+ 程序的基础,任何一个C+ 源程序都是由若干函数组成的。C+ 中的函数分为库函数与自定义函数两类。,3.1 函数的定义和声明 (Function Definition and Declaration)

      2、,3.1.1 函数的定义(Function Definition) 函数可以被看做是一个由用户定义的操作。函数用一个函数名来表示。 函数的操作数称为参数,由一个位于括号中并且用逗号分隔的参数表指定。 在C+ 程序中,调用函数之前首先要对函数进行定义。如果调用此函数在前,定义函数在后,则会产生编译错误。,1无参函数的一般形式 无参函数的一般形式如下: 类型说明符 函数名() 类型说明 语句 ,类型说明符指明了本函数的类型。函数的类型实际上是函数返回值的类型。此处的类型说明符与第2章介绍的各种说明符相同。 函数名是由用户定义的标识符。定义函数名与定义变量名的规则是一样的,但应尽量避免用下划线开头,因为编译器常常定义一些下划线开头的变量或函数。,在很多情况下都不要求无参函数有返回值, 此时函数类型说明符可以写为void。 例如: void Hello() cout“Hello world”endl; ,2有参函数的一般形式 有参函数的一般形式如下: 类型说明符 函数名(形式参数表) 形式参数类型说明 类型说明 语句 ,在进行函数调用时,主调函数将赋予这些形式参数实际的值。形参既然是变量,当然

      3、必须给以类型说明。 例如,定义一个函数, 用于求两个数中的大数,程序如下: int max(a,b) int a,b; if (ab) return a; else return b; ,这种格式不易进行编译系统检查,从而会引起一些非常细微而且难以跟踪的错误。新标准中把对形参的类型说明合并到形参表中,称为“现代格式”。 例如,max函数用现代格式可定义如下: int max(int a,int b) if(ab) return a; else return b; ,【例3-1】 max函数的位置示例。 #include using namespace std; int max(int a,int b) if(ab)return a; else return b; void main() ,int max(int a,int b); int x,y,z; coutxy; z=max(x,y); cout“maxmum= “zendl; ,在C+ 语言中,所有的函数定义(包括主函数main在内)都是平行的。但是函数之间允许相互调用,也允许嵌套调用。 因此,C+ 程序的执行总是从main函数

      4、开始,完成对其他函数的调用后再返回到main函数,最后由main函数结束整个程序。一个C+ 源程序必须有且只能有一个主函数main。,3.1.2 函数的声明(Function Declaration) C+中函数声明又称为函数原型。标准库函数的函数原型都在头文件中提供,程序中可以用 #include指令包含这些原型文件。对于用户自定义函数,程序员应该在源代码中说明函数原型。函数原型是一条程序语句,它由函数首部和分号组成,其一般形式如下: 函数名();,函数声明和函数首部的异同如下: (1) 两者的函数名、函数类型完全相同。 (2) 两者中形参的数量、次序、类型完全相同。 (3) 函数声明中的形参可以省略名称,只声明形参类型,而函数首部不能。 (4) 函数声明是语句,而函数首部不是。 (5) 当函数定义在调用它的函数前时,函数声明不是必需的;否则,必须在调用它之前进行函数声明。,如例3-1中max()函数定义在main()函数前,所以可以不用函数声明。但是如果把max()函数定义在main()函数之后,则应该写成如下形式: #include using namespace std; in

      5、t max(int a,int b); /函数声明 void main() /主函数 ,int max(int a,int b); int x,y,z; coutxy; z=max(x,y); cout“maxmum= “zendl;, int max(int a,int b) /用户定义函数 if(ab)return a; else return b; ,【例3-2】 实现两个数相加。 程序如下: #include using namespace std; int add(int ,int); /函数原型 void main() ,int sum,x,y; coutxy; sum=add(x,y); /函数调用 cout“Sum=“sumendl; int add(int a,int b) /函数定义, return a+b; 运行结果: 请输入被加数和加数: 213 625 Sum=838,3.1.3 函数值和函数类型 (Function Values and Function Types) 1函数返回值与函数类型 通常函数被调用总是希望得到一个确定的值,即函数的返回值。函数的返回

      6、值确定了函数的类型,即函数类型就是返回值的类型。,1) 有返回值函数 此类函数被调用执行完后将向调用者返回一个执行结果,即函数返回值,数学函数即属于此类函数。例如: int sum(int a,int b) /有返回值,返回类型为整型 return (a+b); ,2) 无返回值函数 此类函数用于完成某项特定的处理任务, 执行完成后不向调用者返回函数值。这类函数类似于其他语言的过程。 例如: void printsum(int a,int b) /无返回值 couta+bendl; ,2return语句 函数的返回值是通过return语句获得的。return语句的一般格式如下: return (表达式); 或 return 表达式; 或 return;,说明: (1) 返回值可以用括号括起来,也可以不括起来,还可以没有返回值。 (2) 一个函数如果有一个以上return语句,则当执行到第一条return语句时函数返回确定的值并退出函数,其他语句不被执行。,例如,下面函数的第二条return语句不能执行。 int fun() int a,b; return a; /该语句执行且返回a的值

      7、 return b; /该语句不被执行 ,(3) return语句可以返回一个表达式的值。 (4) 在无返回值的函数体中可以没有return语句,函数执行到函数体的最后一条语句,遇到花括号“”时,自动返回到主调用程序。 (5) 如果return语句中表达式的值和函数的值其类型不一致,则以函数类型为准。 (6) 如果没有使用return返回一个具体的值,而函数又不是void型,则返回值为一个随机整数。,在C+ 语言中可从不同的角度对函数进行分类。 (1) 从函数定义的角度,函数可分为库函数和用户定义函数两种。 (2) 从主调函数和被调函数之间数据传送的角度,函数又可分为无参函数和有参函数两种。,3.2.1 函数的调用(Function Call) 函数调用用一个表达式来表示。函数调用的一般形式如下: 函数名(实际参数表) 其中,函数名是由用户自定义或C+ 提供的标准函数名;实际参数表是由逗号分隔的若干个表达式,每个表达式的值为实参。实参用来在调用函数时对形参进行初始化,实参与形参的个数相同,类型一致,顺序一致。,3.2 函数的调用与参数传递 (Function Call and Para

      8、meter Passing),1函数调用的格式 在C+ 语言中,可以用以下几种方式调用函数。 1) 函数表达式 如果在函数定义时需要返回某个数值,则return语句后必须有表达式。 2) 函数语句 函数调用的一般形式加上分号即构成函数语句。 3) 函数实参 函数实参是指函数作为另一个函数调用的实际参数出现。,2函数调用的过程 当调用一个函数时,整个调用过程分为以下三步进行: (1) 函数调用。 (2) 函数体执行,即逐条运行函数体中语句的过程。 (3) 返回,即返回到函数调用表达式的位置。返回过程执行的是函数体中的return语句。,3.2.2 函数调用时的参数传递(Parameter Passing) 参数传递称为“实虚结合”,即实参向形参传递信息,使形参具有确切的含义(即具有对应的存储空间和初值)。 1按值传递 以按值传递方式进行参数传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的长度,然后把已求出的实参表达式的值一一存入到为形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。,【例3-3】 按值传递。 程

      9、序如下: #include using namespace std; void swap(int,int); void main() ,int a=3,b=4; cout“a=“a“,b=“ bendl; swap(a,b); cout“a=“a“,b=“ b endl; void swap(int x,int y) ,int t=x; x=y; y=t; 运行结果: a=3, b=4,关于按值传递应当注意下面几个问题: (1) 形参在没有被调用时,不占用存储空间。 (2) 调用函数时,应该注意函数的实参与形参类型一致,否则会出现错误。 (3) C+函数中参数的求值顺序为自右至左,即C+函数中实参的值是从右到左确定的。,【例3-4】 函数参数的传递顺序。 程序如下: #include using namespace std; int some_fun(int a,int b) return a+b; void main() int x,y;,x=2; y=3; coutsome_fun(+x , x+y)endl; x=2; y=3; coutsome_fun(x+y , +x)endl; 运行结果: 8 9,2地址传递 如果在函数定义时将形参的类型说明成指针,则对这样的函数进行调用时就需要指定地址值形式的实参,这时的参数传递方式即为地址传递方式。与按值传递不同,地址传递把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。,【例3-5】 地址传递。 程序如下: #include void swap(int *,int *); void main()

      《C++面向对象程序设计 教学课件 ppt 作者 李兰_ 第3章》由会员E****分享,可在线阅读,更多相关《C++面向对象程序设计 教学课件 ppt 作者 李兰_ 第3章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.