C-程序设计-第5章函数与预处理课件.ppt

上传人(卖家):晟晟文业 文档编号:4300872 上传时间:2022-11-27 格式:PPT 页数:47 大小:463.50KB
下载 相关 举报
C-程序设计-第5章函数与预处理课件.ppt_第1页
第1页 / 共47页
C-程序设计-第5章函数与预处理课件.ppt_第2页
第2页 / 共47页
C-程序设计-第5章函数与预处理课件.ppt_第3页
第3页 / 共47页
C-程序设计-第5章函数与预处理课件.ppt_第4页
第4页 / 共47页
C-程序设计-第5章函数与预处理课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、1函数与预处理函数与预处理第五章 函数与预处理函数的定义函数的定义函数的调用函数的调用指针与函数指针与函数函数的嵌套调用函数的嵌套调用函数的递归调用函数的递归调用局部变量和全局变量局部变量和全局变量变量的存储类型变量的存储类型2函数与预处理函数与预处理5.1.1 函数的引入函数的引入#include void main()int n=30;for(int i=0;in;i+)cout-;coutendl;cout方法的引入方法的引入endl;for(i=0;in;i+)cout-;coutendl;【运行结果】【运行结果】-方法的引入方法的引入-l一段程序被执行了多次一段程序被执行了多次l优化

2、程序结构优化程序结构l通用:函数库通用:函数库3函数与预处理函数与预处理#include void main()int n=30;dline(n);dline(n);cout方法的引入方法的引入endl;dline(n);dline(n);void dline(int m)for(int i=0;im;i+)cout-;coutab;s=add(a,b);coutsendl;testMethod.cpp5函数与预处理函数与预处理返回值类型返回值类型规定了规定了方法方法返回返回值值的类型。返回值由的类型。返回值由return提提供。供。注意:若注意:若方法方法无返回值,数据类型无返回值,数据类型

3、应为应为void。方法名方法名是有效的是有效的c+标识符。标识符。形参形参表是用逗号隔开的变表是用逗号隔开的变量说明列表。量说明列表。注意:函数可以无参数。可将函数注意:函数可以无参数。可将函数分为两类:分为两类:无参无参方法方法与有参与有参方法方法。int add(int x,int y)return x+y;返回值类型返回值类型 方法名方法名(形参表形参表)void myprint()System.out.print(*);double area(double x,y,z)6函数与预处理函数与预处理5.1.3return语句语句语句格式:语句格式:return;/无值无值voidretur

4、n 表达式;表达式;/有值有值return(表达式表达式);/有值有值 函数体中的流程控制语句。先计算表达式的值,函数体中的流程控制语句。先计算表达式的值,然后从然后从被调方法被调方法返回到返回到主调方法主调方法,表达式的值作,表达式的值作为函数的返回值。为函数的返回值。(注意:只能返回一个值注意:只能返回一个值)函数值的类型:以函数定义的类型为准,若不同,函数值的类型:以函数定义的类型为准,若不同,需将需将return语句表达式的值转换类型。语句表达式的值转换类型。无返回值无返回值void时,可无时,可无return语句,执行到函数语句,执行到函数体体时返回。时返回。7函数与预处理函数与预处

5、理5.1.4 函数声明(函数原型)函数声明(函数原型)_函数原型的形式:函数原型的形式:数据类型数据类型 函数名函数名(形参类型说明形参类型说明);例:例:double area(double,double,double);而编译器获得函数原型有两种情况:而编译器获得函数原型有两种情况:()当函数定义在调用之前时,则()当函数定义在调用之前时,则从定义中抽取从定义中抽取函函数原型。数原型。()当函数定义在调用之后时,则程序员须在调用()当函数定义在调用之后时,则程序员须在调用之前用函数原型之前用函数原型对函数进行声明对函数进行声明,让编译器获得函,让编译器获得函数原型数原型8函数与预处理函数与

6、预处理注注 意意9函数与预处理函数与预处理一、函数调用形式:一、函数调用形式:5.2 函数的调用t=sqrt(t*(t-a)*(t-b)*(t-c);s=area(a,b,c);s=sum(5,7);10函数与预处理函数与预处理main()s=area(a,b,c);函数函数调用调用实参的个数、类型、顺序要与形参对应一致实参的个数、类型、顺序要与形参对应一致3.可以没有参数,但圆括号一定要有,不能省略可以没有参数,但圆括号一定要有,不能省略主方法主方法被调方法被调方法float area(int x,int y,int z)return s实实 参参形形 参参 11函数与预处理函数与预处理有时

7、也称:transferValue.cpptestTransefer.cpp12函数与预处理函数与预处理内存解析内存解析a:3b:5a:3b:5temp:35313函数与预处理函数与预处理transferAddress.cpp14函数与预处理函数与预处理内存解析内存解析a:3b:5a:&ab:&btemp:35315函数与预处理函数与预处理transReference.cpp16函数与预处理函数与预处理内存解析内存解析a:3b:5mntemp:35317函数与预处理函数与预处理li5_17.cppvoid convert(char*s)void convert(char s)两种定义等价两种定义

8、等价convert(t)testTransArray.cpp18函数与预处理函数与预处理内存解析内存解析0GdAt:&t0s:&t0#include void convert(char*);void main()char t10=AdG;convert(t);couttendl;void convert(char*s)*s=B;s1=C;19函数与预处理函数与预处理0GdAt:&t0s#include typedef char array10;void convert(array&s);void main()char t10=AdG;convert(t);couttendl;void conv

9、ert(array&s)s0=B;20函数与预处理函数与预处理21函数与预处理函数与预处理5-4 函数的嵌套调用函数的嵌套调用main()调用调用a函数函数.a 函数函数调用调用b函数函数b函数函数在被调函数中,又调用了函数在被调函数中,又调用了函数-嵌套调用嵌套调用22函数与预处理函数与预处理#includedouble area(double,double,double);void main()double a,b,c,s;coutabc;s=area(a,b,c);cout“area=“s“n”;#include double area(double x,double y,double

10、z)double s;if(x+yz|x+zy|y+z1testRecursionFuncion.cpp24函数与预处理函数与预处理 fac(10)10*fac(9)9*fac(8)3*fac(2)fac(1)=12*1=29*40320=3628802*fac(1)3*2=610*362880=3628800递推过程递推过程回归过程回归过程递递归归终终止止条条件件25函数与预处理函数与预处理5.6.1 26函数与预处理函数与预处理27函数与预处理函数与预处理注注 意意28函数与预处理函数与预处理29函数与预处理函数与预处理在C+中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不

11、同数目的参数,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。如:int max(int x,int y)return(xy)?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;30函数与预处理函数与预处理()作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。如:void func(int);int func(int);void func(int);int func(int)

12、;/错误 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定义的类型只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如:typedef INT int;typedef INT int;void func(int x).void func(int x).void func(INT x

13、)void func(INT x)(3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。31函数与预处理函数与预处理#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=4,b=6;int z=add(int z=add(+a,a+b+a,a+b);/);/从左至右为从左至右为5 115 11 coutzendl;/coutzendl;/从右至左为从右至左为5 105 10 int add(int x,int y)int ad

14、d(int x,int y)/函数定义(实现)函数定义(实现)return x+y;return x+y;注:改变函数的实参的写法,尽量避免二义性的注:改变函数的实参的写法,尽量避免二义性的出现。出现。32函数与预处理函数与预处理33函数与预处理函数与预处理34函数与预处理函数与预处理5-8 作用域与生命期作用域与生命期p162作用域作用域一个变量在一个程序运行中能被使用一个变量在一个程序运行中能被使用的范围,在此作用域中可以引用该变量。的范围,在此作用域中可以引用该变量。一个变量在一个程序运行中存在的期一个变量在一个程序运行中存在的期间,称为该变量的间,称为该变量的“生存期生存期”。35函数

15、与预处理函数与预处理标识符只能在说明它或定义它的范围内是可标识符只能在说明它或定义它的范围内是可见的,而在该范围之外是不可见的。见的,而在该范围之外是不可见的。不同的标识符定义在不同的范围内有不同的作用域。不同的标识符定义在不同的范围内有不同的作用域。按作用域的大小可分为:按作用域的大小可分为:包含着组成该程序的所有文件。包含着组成该程序的所有文件。文件级:文件级:仅在定义它的文件内。仅在定义它的文件内。函数级:函数级:在它所定义的函数体内。在它所定义的函数体内。块级块级(语句语句):定义在分程序中、语句块内。定义在分程序中、语句块内。36函数与预处理函数与预处理#include int a=

16、1;void main()int x=3;/double x(3.5);errorint y(5);if(x2)int x(4);coutxtyt;coutendlxtyendl;testScope.cpp37函数与预处理函数与预处理5-8-2 局部变量和全局变量局部变量和全局变量38函数与预处理函数与预处理#includeint x=1,y=2,z=3;fun1(int x)int z;z=x+y;y=1;cout“x=“x“y=“y“z=“z;return z;void main()int a=10;x=fun1(a);coutx=“x“y=“y“z=“z“n”;F全局变量F局部变量输出结

17、果:输出结果:x=10,y=1,z=12局部变量与全局变量同名局部变量与全局变量同名x=12,y=1,z=339函数与预处理函数与预处理5-8-3生命期一、局部变量的存储类别一、局部变量的存储类别二、全局变量的存储类别二、全局变量的存储类别40函数与预处理函数与预处理程序程序load到内存区到内存区硬盘硬盘heap segstack segdata segcode seg执行过程内存管理执行过程内存管理new .局部变量局部变量全局变量全局变量静态变量静态变量字符串常量字符串常量内存内存找到找到main()开始执行开始执行符号表符号表41函数与预处理函数与预处理一、局部变量的存储类别自动变量自

18、动变量 auto:局部变量的缺省存储类型。局部变量的缺省存储类型。静态局部变量静态局部变量 static 静态变量只初始化一次,在编译时进行。静态变量只初始化一次,在编译时进行。寄存器变量寄存器变量 registerauto int c;int c;static int i;register int j;等价等价42函数与预处理函数与预处理局部变量的自动和静态存储类型举例#include fun1(int x)static int y=1;int z=10;x=x+y;y=x+z;coutxy coutzendl;void main()fun1(1);fun1(1);y:z:10 x:2112

19、z:10 x:132343函数与预处理函数与预处理2、全局变量的存储类别静态外部变量静态外部变量 static静态外部变量作用域为本程序文件,其它程序文件静态外部变量作用域为本程序文件,其它程序文件不能使用不能使用外部变量外部变量 extern外部变量除本程序文件使用外,也可被其它程序文外部变量除本程序文件使用外,也可被其它程序文件使用件使用全局变量的声明:在定义外部变量之前使用该变量,全局变量的声明:在定义外部变量之前使用该变量,需对其声明需对其声明 extern 数据类型数据类型 变量名表变量名表;_注意:用注意:用extern声明只是起一个说明作用,不产生声明只是起一个说明作用,不产生新变量,与定义变量不同新变量,与定义变量不同44函数与预处理函数与预处理/文件文件file1.cpp#include int a=2;/全局变量全局变量 int add(int n);/原型说明原型说明 void main()int b=3,c,d;c=a*b;coutabcendl;d=add(b);cout abd;/文件文件file2.cppextern int a;int add(int n)return n+a;求求ab和和a+b的值的值a:2b:3c:6n:3d:545函数与预处理函数与预处理46函数与预处理函数与预处理47函数与预处理函数与预处理

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C-程序设计-第5章函数与预处理课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|