版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1道客巴巴函数及变量的作用域道客巴巴函数及变量的作用域第1页/共64页第2页/共64页即函数返回值的类型。无返回值为void类型语句序列。描述了实现功能的过程,并一般要最后执行一条return语句。可包含多个形式参数。定义了函数将从调用函数中接收多少个数据及其类型第3页/共64页 第4页/共64页即所有参数的数据类型第5页/共64页注注 意意第6页/共64页#include void f1 ( ) ; /函数说明void f2 ( ) ;void main( ) f1( ); /函数调用 f2( ); void f1( ) /函数定义 cout Function f1.n;f2( );v
2、oid f2( ) cout Function f2 .n;main()f1()f2()第7页/共64页第8页/共64页第9页/共64页第10页/共64页函数声明函数声明调用表达调用表达式式函数定义函数定义实参的个数、类型及顺序要与形参保持一致形式参数实际参数第11页/共64页第12页/共64页有时也称:第13页/共64页#include #include void swap(void swap(int,intint,int); ); void main( )void main( ) int int a=3,b=5; a=3,b=5; c o u t b e f o r e s w a p c
3、 o u t b e f o r e s w a p :a=a,b=bendl;:a=a,b=bendl; swap( swap(a,ba,b); ); coutafter swap :a=a,b=bendl; coutafter swap :a=a,b=bendl; void swap(void swap(int a,int bint a,int b) ) int temp; int temp; temp=a; a=b; b=temp;temp=a; a=b; b=temp; coutin swap :a=a,b=bendl; coutin swap :a=a,b=bendl; 第14页/共
4、64页调用swap时,内存单元分配情况:353ababtemp 实参 形参3535实参形参35过程调用中35过程调用后temp=a; a=b; b=temp;第15页/共64页第16页/共64页#include #include void swap( void swap(int int * *,int ,int * *); ); void main( ) void main( ) int int a=3,b=5; a=3,b=5; coutbefore swap :a=a,b=bendl; coutbefore swap :a=a,b=bendl; swap( swap(&a,&
5、;ba,&b); /); /实参为变量地址 coutafter swap :a=a,b=bendl;coutafter swap :a=a,b=bendl; void swap(void swap(int int * * a,int a,int * *b b) /) /形参为指针类型 int temp; int temp; temp=temp=* *a; a; * *a=a=* *b; b; * *b=temp; /b=temp; /注意引用方式 coutin swap :a=a,b=bendl; coutin swap :a=a,b=bendl; 第17页/共64页调用swap时,内
6、存单元分配情况:35353过程调用后 形参ababtemp 实参3510012008实参形参2008100120081001过程调用中35temp=*a; *a=*b; *b=temp;第18页/共64页第19页/共64页#include void swap(int &,int &); void main( ) int a=3,b=5; c o u t b e f o r e s w a p :a=a,b=bendl; swap(a,b); /实参为变量名 coutafter swap :a=a,b=bendl; void swap(int & a,int &b
7、) /形参为引用类型 int temp; temp=a; a=b; b=temp; /注意区别 coutin swap :a=a,b=bendl; 第20页/共64页调用swap时,内存单元分配情况:35353过程调用后 形参ababtemp 实参35实参形参20081001过程调用中35temp=a; a=b; b=temp;第21页/共64页第22页/共64页 #include #include int add(int x,int y); int add(int x,int y); /函数声明函数声明 void main( )void main( ) int a=4,b=6; int a=
8、4,b=6; int z=add( int z=add(+a,a+b+a,a+b); /); /从左至右为从左至右为5 5 1111 coutzendl; / coutzendl; /从右至左为从右至左为5 5 1010 int add(int x,int y) int add(int x,int y) /函数定义(实现函数定义(实现) return x+y; return x+y; 第23页/共64页第24页/共64页第25页/共64页第26页/共64页void invert(char b,int n) for(int i=0;in/2;i+) char c=bi; bi=bn-1-i; b
9、n-1-i=c; S0S1S2S3S4不能写成invert(sn,n)有问题吗?第27页/共64页第28页/共64页cout字符串反转后的顺序:sendl;void invert(char *b,int n) for(int i=0;iy) ? x: y); double max (double x , double y) return ( (xy) ?x: y); #include void main( ) coutmax(10,20)endl; coutmax(1.23,2.34)endl; 靠将实参的个数及类型和所被调用的f()函数的形参的个数及类型一一比较来判断。第38页/共64页()
10、作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。如:void func(int); int func(int);void func(int); int func(int); /错误 int min(int ,int); int min(int ,int); int min(int,int,int);int min(int,int,int); /正确 int add(int,int); int add(int,int); double add(double,double);double add(double,double);/正确()typedef定义的
11、类型只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如: typedef INT int;typedef INT int; void func(int x) . void func(int x) . void func (INT x) void func (INT x) (3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。第39页/共64页第40页/共64页第41页/共64页#include #include const int k=4;const int k=4;constconst int n=6; int n=6; /符号常量定义符号常量定义int power(int,
12、int); int power(int,int); /求幂的函数说明求幂的函数说明int sum(int,int); int sum(int,int); /求和的函数说明求和的函数说明void main( )void main( ) coutSum of coutSum of = ;= ; coutsum(k,n)endl; coutsum(k,n)endl; /调用调用sumsum函数函数 第42页/共64页int sum(int k,int n)int sum(int k,int n)/ /* *计算计算1 1到到n n的的k k次方之累加和次方之累加和* */ / int s=0; in
13、t s=0; for(int i=1;i=n;i+) for(int i=1;i=n;i+) s+= power(i, k); s+= power(i, k); /累加累加 return s; return s; /调用调用f1f1函数函数 int power(int m,int n)int power(int m,int n)/ /* *计算计算mm的的n n次方次方* */ / int p=1, i; int p=1, i; for(i=1;in;i+) p for(i=1;i1三、调用函数本身,但参数值趋于结束条件一、有一个使递归结束的条件二、当条件成立时,不再调用自己,而有确定值第44
14、页/共64页s:=fac(3)主程序fac(3):=fac(2)*3n=3fac(2):=fac(1)*2n=2fac(1):=1n=1fac:=6fac:=2fac:=1第45页/共64页第46页/共64页 第47页/共64页第48页/共64页在不同作用域中允许同名。在同一作用域中不允许同名。蓝色为函数作用域绿色为块作用域不为x x的原因是局部优局部优先先4 5 4 5 4 505第49页/共64页第50页/共64页#includeint i(5); /外部变量外部变量externstatic int j(6); /外部静态变量外部静态变量void min(int x,int y ) /形参
15、形参 int i(3); /自动变量自动变量 auto register int j(2); /寄存器变量寄存器变量 static int k(1); /内部静态变量内部静态变量 void main( ) 局部变量全局变量蓝色为文件作用域绿色为函数作用域注意:同名时是局部优先第51页/共64页5 7 105 7 105 8 8.85 8 8.88 8 88 8 88 7 108 7 108 8 8.88 8 8.8第52页/共64页第53页/共64页第54页/共64页sum(15)ave(15)第55页/共64页第56页/共64页第57页/共64页第一轮第一轮 B D C A E原数据原数据 B E D C A第三轮第三轮 B A C D E第二轮第二轮 B C A D E第四轮第四轮 A B C D E 4 3 2 1结论:轮数结论:轮数(外循环外循环)为为:n-1,每轮次数每轮次数(内循环内循环)为为:n-i第58页/共64页第59页/共64页第60页/共64页else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026人教版三年级下册数学 4.1 面积和面积单位(1) 教学课件
- 外研八下英语Unit 5 Starting out-Understanding ideas《自主学习》课件
- 2025 网络基础中网络教育的虚拟教学团队建设与协作课件
- 盐化工新区污水处理工程可行性研究报告
- 2026年外出住宿合同(1篇)
- 行政强制措施的实施条件和程序
- 2026年及未来5年市场数据中国消炎利胆片行业市场深度分析及投资策略研究报告
- 2026年及未来5年市场数据中国锂精矿行业市场发展数据监测及投资潜力预测报告
- 四川省内江市2026届高三第二次模拟考试试题地理试卷(含答案)
- 2025 高中信息技术数据与计算之数据与计算促进在线教育国际化发展课件
- 硅酸镁铝增稠触变性及其农药中的应用探讨-陈杰
- 开平事业单位笔试真题
- 水电水泵表面涂覆要求
- 共青团光辉历史简洁版
- 事业单位统考-综合应用能力C类 梳理精华
- GB/T 14536.1-2022电自动控制器第1部分:通用要求
- GB/T 14689-2008技术制图图纸幅面和格式
- FZ/T 07008-2020定形机热平衡测试与计算方法
- 安全文明施工措施费专款专用的方案
- 教师考试 思政资料
- 复方氨基酸注射液
评论
0/150
提交评论