




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
* 第5章 对象的函数成员与全局函数 教学内容 函数的定义与调用 内联函数 函数的重载 函数模板 变量的存储属性 1 * 第5章 对象的函数成员与全局函数 重点、难点 函数的定义与调用 函数的递归调用(栈的应用) 函数的重载 函数模板 变量的存储属性 2 * 第5章 对象的函数成员与全局函数 教学目标 熟练掌握函数的定义与调用 掌握函数的递归调用 掌握内联函数的概念 掌握函数的重载与函数模板的使用 掌握变量的存储属性 3 * 第5章 对象的函数成员与全局函数 5.1 定义函数的一般形式 5.2 函数调用与参数传递 5.3 函数的嵌套调用与递归调用 5.4 内置函数 5.5 函数重载 5.6 函数模板 5.7 有默认参数的函数 5.8 变量的存储属性 4 * 5.0 函数概述 一个大型程序的总体设计原则是模块化 ,将程序划分为若干个模块,每个模块完成 特定的功能。 模块可以作为黑盒来理解,模块之间通 过参数和返回值或其它方式相联系。 C+程序是函数的集合,由一个主函数 main()和若干个子函数构成。 5 * 函数概述 主函数main()是一个特殊的函数,由操 作系统调用,并在程序结束时返回到操作系 统。程序总是从主函数开始执行,即从主函 数的前花括号开始执行,一直到主函数的后 花括号为止。 主函数分别调用其它子函数,子函数之 间也可以相互调用。 6 * 函数概述 函数的作用与特点: (1)提高程序源代码的重复使用率。 (2)函数被作为一个特殊的独立“语句”“表 达式” 来使用。 (3)函数的内部流程是独立、封闭、原则上无交 叉的。 7 * 5.1 函数定义与调用语句 5.1.1 函数分类 从用户角度 标准函数 用户自定义函数 C+中的函数分为标准库函数和用户自定义函数 。标准库函数由C+系统提供,可以直接使用, 但需要在程序中包含相应的头文件;用户自定义 函数是由用户自己根据需要编写的。 从函数形式 无参函数 有参函数 8 * 5.1.2 函数的定义 【格式】 () 函数头 9 * 函数的定义实例 void swap(int x,int y) /有参函数 int t; t=x;x=y;y=t; return ; /return语句只起返回的作用 void pt( void ) /无参函数 cout ;或 return 表达式; 或 return 【功能】将被调函数内程序的执行顺序返回给主 调函数内的调用语句,然后去执行主调函数的下 一语句。 13 * 返回值实例 int add(int x,int y) return x+y; 14 * 返回值 【说明】 (1)return后可以有表达式,也可以没有表达式。前 者返回一个值给调用函数,后者返回到调用函数处, 但不返回值。 (2)函数中可有多个return语句。但是,只要遇到一 个return语句就返回到调用函数处。 (3)若无return语句,遇时,自动返回到调用函数 处。 (4)若函数类型与return语句中表达式的类型不一致 ,按前者为准,进行自动转换,即函数调用转换。 (5)return语句,只能返回一个值。 15 * 【实例5-1-1】函数类型与return语句中表达式的类型 不一致的函数应用实例。 #include int sum(float x,float y) float z; z=x+y; coutxy; z=max(x,y) cout float max(float x,float y) if(x=y) return x; else return(y); void main() float x,y,z,t; coutxyz; t=max(x,y); cout=y) return x; else return(y); #include void main() float x,y,z,t; float max(float ,float ); coutxyz; t=max(x,y); cout main() int n; float s,x; float power(float,int); coutxn; s=power(x,n); cout int g(int i)return +i; int f(int i)int m;m=g(i+2);return m; void main() int x=3,y=3,z=3; x+=f(x); y+=g(f(y); z+=f(g(z); cout int age(int); void main() cout float fact(int); void main() int n;float t; cinn; /n=6 t=fact(n); cout inline int fx(int); void main( ) int i,m=0; for(i=1;i inline int max(int,int, int); void main( ) int i=10,j=20,k=30,m; m=max(i,j,k); couta) a=b; if(ca) a=c; return a; 【例5-4-2】采用内联函数编程求3个数中的最大值。 40 * 5.5 函数重载 函数的重载是指同名函数对应多个不同的 函数实现。重载函数要求同名函数具有相同的 功能,而只是函数类型、参数个数或参数顺序 不同。系统将根据同名函数的这些不同之处来 选择其对应的实现。 41 * 函数重载实例 #include int max(int x,int y) return (xy?x:y); float max(float x,float y) return (xy?x:y); double max(double x,double y) return (xy?x:y); void main() int a1=6,b1=15; float a2=2.3f,b2=-1.2f; double a3=3.2,b3=0; cout void main( ) int max(int a,int b,int c); int max(int a,int b); int a=8,b=-12,c=27; coutb?a:b); if(cz) return c; else return z; int max(int a,int b) int z; z=(ab?a:b); return z; 46 * 5.6 函数模板(function template) 所谓函数模板,实际上是建立一个通用函 数,其函数类型和形参类型不具体指定,用一 个虚拟的类型来代表。这个通用函数就称为函 数模板。 凡是函数体相同的函数都可以用这个模板 来代替,不必定义多个函数,只需在模板中定 义一次即可。在调用函数时系统会根据实参的 类型来取代模板中的虚拟类型,从而实现了不 同函数的功能。 47 * 函数模板实例 #include template /模板声明,其中T为类型参数 T max(T a,T b,T c) /定义一个通用函数,用T作虚拟的类型名 if(ba) a=b; if(ca) a=c; return a; 【例5-6-1】用函数模板实现:求3个数中最大的数 48 * 函数模板实例 void main( ) int i1=185,i2=-76,i3=567,i; double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,g2=-912456,g3=673456,g; i=max(i1,i2,i3); /调用模板函数,此时T被int取代 d=max(d1,d2,d3); /调用模板函数,此时T被double取代 g=max(g1,g2,g3); /调用模板函数,此时T被long取代 cout float fact(int n=10) float f=1; for(int i=2;i void main( ) int max(int a, int b, int c=0);/函数声明,形参c有默认值 int a,b,c; cinabc; couta) a=b; if(ca) a=c; return a; 54 * 5.8 变量的存储属性 5.8.1 局部变量和全局变量 1. 局部变量 在一个函数和类内部定义的变量称为内部变 量。其作用域为:定义它的函数或类内起作用。 局部变量的作用域有:块作用域、函数原型作用 域、函数作用域和类作用域。 55 * 局部变量实例 在块中声明的标识符,只能在该块中引用。 生存期:开始于标识符的说明处,结束于块的结 尾处。 void main( ) main( ) int m,n; double m,z; /块内有效 56 * 局部变量 【说明】 (1)在不同的块中,允许有同名变量;在相同 的块中,不允许有同名变量; (2)局部变量:在块中或函数内部定义的变量 成为局部变量; (3)局部优先规则:块内标识符将屏蔽同名标 识符; 57 * 局部变量实例 【例5-8-1】阅读下列程序,给出运行结果。 结果: 10 20 30 50 60 110 10 20 110 #include void main() int i=10,j=20,k=30; cout void main() for(int i=0;i int i=100; void main() int i,j=50; i=18; :i=:i+4; j=:i+i; cout void main() void increament(); increament(); increament(); increament(); void increament() int i=1; i+; cout void test_static() static int vs=0; cout static int x=500; void main() auto int x=300; static int y=100; cout void fac(int); int main( ) int i; for(i=1;i void main() extern int x; cout void main() void increament(); increament(); increament(); increament(); void increament() extern int i; i+; cout void main() extern int a,b; a=5;b=3; cout int i; void main() void prt(); for(i=0;i/file1.cpp float h; extern float area(float,float); extern float a; void main() float b,s; cinabh; s=area(a,b); cout using namespace std; int main( ) extern int max(int,int); int a,b; cinab; couty?x:y; return z; 86 * 函数定义和调用 局部变量和全局变量 小结 87 * 2.4 连接 创建用户自己的头文件,包含一些共用信息。 /digit.h #define FALSE 0 #define TRUE 1 /digit.cpp #include “e:lyjchdigit.h“ int isdigit(char ch) return(ch=0 88 * #include #include #include #include void main() char c; coutc; if(isdigit(c)=FALSE) cout #include #include “e:lyjchdigit.h“ #include “e:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同终止补偿
- 2025物业租赁安全协议责任书合同
- 第五节 戏曲教学设计-2023-2024学年中职音乐第五单元 走进戏剧高教版(公共艺术·音乐篇·第二版)
- 2025房屋买卖租赁合同模板
- 6. 6 -次函数、-元-次方程和-元-次不等式 说课稿 -2024-2025学年苏科版数学八年级上册
- 人教版高一物理必修一《1 质点 参考系和坐标系》教学设计
- 电池厂固定资产盘点实施办法
- 济南事业单位笔试真题2025
- 2025民事诉讼授权代理协议(合同范本)
- 2025年吉林省农村信用社个人经营借款合同
- 公司举办台球赛策划方案
- DZ 53-1987沉积岩分散有机质中镜质组反射率测定方法
- 小区物业管家管理制度
- T/DZJN 168-2023废旧动力电池有价金属回收率计算与检测方法
- 超市水产合作商协议书
- 市场营销合同协议书
- 危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)2025解读
- 数控装调与维修实训安全教育
- 《风险与合规管理》课件
- 中考古文整合复习主题五治国类
- 2023陆上风电场工程退役拆除技术导则
评论
0/150
提交评论