收藏 分销(赏)

C函数-(2)省公共课一等奖全国赛课获奖课件.pptx

上传人:人****来 文档编号:4153725 上传时间:2024-08-05 格式:PPTX 页数:76 大小:354.45KB
下载 相关 举报
C函数-(2)省公共课一等奖全国赛课获奖课件.pptx_第1页
第1页 / 共76页
C函数-(2)省公共课一等奖全国赛课获奖课件.pptx_第2页
第2页 / 共76页
C函数-(2)省公共课一等奖全国赛课获奖课件.pptx_第3页
第3页 / 共76页
C函数-(2)省公共课一等奖全国赛课获奖课件.pptx_第4页
第4页 / 共76页
C函数-(2)省公共课一等奖全国赛课获奖课件.pptx_第5页
第5页 / 共76页
点击查看更多>>
资源描述

1、 函数定义函数定义 函数参数和函数值函数参数和函数值 函数调用函数调用 变量作用范围变量作用范围 变量生存周期变量生存周期第八章第八章 函函 数数第1页8.1 8.1 概述概述第2页C 程序结构程序结构C C 程序程序程序程序(project (project 项目或工程项目或工程项目或工程项目或工程)源程序文件源程序文件源程序文件源程序文件1 1源程序文件源程序文件源程序文件源程序文件2 2源程序文件源程序文件源程序文件源程序文件n n预处理命令预处理命令预处理命令预处理命令全局变量申明全局变量申明全局变量申明全局变量申明函数n申明函数函数函数函数1 1申明申明申明申明 函数函数函数函数2

2、2申明申明申明申明函数首部函数首部函数首部函数首部函数体函数体函数体函数体局部变量申明局部变量申明局部变量申明局部变量申明执行语句执行语句执行语句执行语句第3页为什么要编写函数?使用函数可以把常用具有一定功能代码段组织为一个紧凑可重复使用单元。这一方面符合结构化程序设计要求,其次可以大大降低重复输入程序代码工作量,同时更增加了程序可读性,极大方便了程序调试和维护。函数基本概念函数基本概念重点掌握内容:重点掌握内容:重点掌握内容:重点掌握内容:函数定义:函数定义:函数定义:函数定义:函数首部,函数体函数首部,函数体函数首部,函数体函数首部,函数体 函数参数:形参和实参函数参数:形参和实参函数参数

3、:形参和实参函数参数:形参和实参 函数返回值函数返回值函数返回值函数返回值 函数调用函数调用函数调用函数调用vv函数就是一个能完成一定功效被单独封装代码模块。函数就是一个能完成一定功效被单独封装代码模块。函数就是一个能完成一定功效被单独封装代码模块。函数就是一个能完成一定功效被单独封装代码模块。最终目:依据需要编写函依据需要编写函数数,并利用函数来并利用函数来实现整个程序。实现整个程序。第4页vv系统库函数系统库函数系统库函数系统库函数由系统提供,不需要用户编写能够直接使用函数。由系统提供,不需要用户编写能够直接使用函数。由系统提供,不需要用户编写能够直接使用函数。由系统提供,不需要用户编写能

4、够直接使用函数。不一样不一样不一样不一样C C 编译系统提供库函数数量和功效是不一样,但有一编译系统提供库函数数量和功效是不一样,但有一编译系统提供库函数数量和功效是不一样,但有一编译系统提供库函数数量和功效是不一样,但有一些基本函数是共同,如些基本函数是共同,如些基本函数是共同,如些基本函数是共同,如printfprintf、scanfscanf等。等。等。等。函数分类函数分类从函数起源看,函数分为以下两类:从函数起源看,函数分为以下两类:从函数起源看,函数分为以下两类:从函数起源看,函数分为以下两类:vv用户自定义函数用户自定义函数用户自定义函数用户自定义函数只使用系统库函数无法完成需要功

5、效,由用户自己编写函数。只使用系统库函数无法完成需要功效,由用户自己编写函数。只使用系统库函数无法完成需要功效,由用户自己编写函数。只使用系统库函数无法完成需要功效,由用户自己编写函数。用户自定义函数依据结构化程序设计要求,对实际问题进行用户自定义函数依据结构化程序设计要求,对实际问题进行用户自定义函数依据结构化程序设计要求,对实际问题进行用户自定义函数依据结构化程序设计要求,对实际问题进行模块分解后而产生,往往是在调用若干系统库函数基础上实模块分解后而产生,往往是在调用若干系统库函数基础上实模块分解后而产生,往往是在调用若干系统库函数基础上实模块分解后而产生,往往是在调用若干系统库函数基础上

6、实现。现。现。现。void OutputResult(int num)void OutputResult(int num)printf(“The max is%dn”,num);printf(“The max is%dn”,num);第6页vv无参函数无参函数无参函数无参函数无需依据任何其它外部输入信息,完成预先设计固定功效函无需依据任何其它外部输入信息,完成预先设计固定功效函无需依据任何其它外部输入信息,完成预先设计固定功效函无需依据任何其它外部输入信息,完成预先设计固定功效函数。数。数。数。函数分类函数分类从函数参数个数来看,函数分为以下两类:从函数参数个数来看,函数分为以下两类:从函数参

7、数个数来看,函数分为以下两类:从函数参数个数来看,函数分为以下两类:vv有参函数有参函数有参函数有参函数必须依据其它外部输入信息,才能完成预先设计一定功效函必须依据其它外部输入信息,才能完成预先设计一定功效函必须依据其它外部输入信息,才能完成预先设计一定功效函必须依据其它外部输入信息,才能完成预先设计一定功效函数。数。数。数。void OutputMessagevoid OutputMessage()()printf(“Welcome to use my program!n”);printf(“Welcome to use my program!n”);void OutputResultvoi

8、d OutputResult(int num)(int num)printf(“The max is%dn”,num);printf(“The max is%dn”,num);第7页vv无返回值函数无返回值函数无返回值函数无返回值函数调用该函数,完成预先设计功效后,并不返回任何值函数。调用该函数,完成预先设计功效后,并不返回任何值函数。调用该函数,完成预先设计功效后,并不返回任何值函数。调用该函数,完成预先设计功效后,并不返回任何值函数。通常,无参函数都不返回值。通常,无参函数都不返回值。通常,无参函数都不返回值。通常,无参函数都不返回值。函数分类函数分类从函数返回值个数来看,函数分为以下两类

9、:从函数返回值个数来看,函数分为以下两类:从函数返回值个数来看,函数分为以下两类:从函数返回值个数来看,函数分为以下两类:vv有返回值函数有返回值函数有返回值函数有返回值函数调用该函数,完成预先设计功效后,有返回值函数。调用该函数,完成预先设计功效后,有返回值函数。调用该函数,完成预先设计功效后,有返回值函数。调用该函数,完成预先设计功效后,有返回值函数。voidvoid OutputMessage()OutputMessage()printf(“Welcome to use my program!n”);printf(“Welcome to use my program!n”);intint

10、 MaxInt(int x,int y)MaxInt(int x,int y)if(x y)if(x y)returnreturn(x);else (x);else returnreturn(y);(y);第8页8.2 8.2 函数定义普通形式函数定义普通形式第9页函数定义方法函数定义方法类型标志符类型标志符类型标志符类型标志符 函数名函数名函数名函数名(形参列表形参列表形参列表形参列表)参数定义参数定义参数定义参数定义 语句组语句组语句组语句组 类型标志符类型标志符类型标志符类型标志符:表明函:表明函:表明函:表明函数返回值类型。假如省数返回值类型。假如省数返回值类型。假如省数返回值类型。假

11、如省略,系统则认为是略,系统则认为是略,系统则认为是略,系统则认为是intint型。型。型。型。函数名函数名函数名函数名:命名规:命名规:命名规:命名规则同变量名。用于则同变量名。用于则同变量名。用于则同变量名。用于调用该函数。调用该函数。调用该函数。调用该函数。形参列表形参列表形参列表形参列表:定义要传值:定义要传值:定义要传值:定义要传值局部变量,保留调用该局部变量,保留调用该局部变量,保留调用该局部变量,保留调用该函数时输入信息。形参函数时输入信息。形参函数时输入信息。形参函数时输入信息。形参多于一个时,用逗号分多于一个时,用逗号分多于一个时,用逗号分多于一个时,用逗号分隔。没有形参时,

12、括号隔。没有形参时,括号隔。没有形参时,括号隔。没有形参时,括号不能省略。形参列表方不能省略。形参列表方不能省略。形参列表方不能省略。形参列表方式以下:式以下:式以下:式以下:类型标志符类型标志符类型标志符类型标志符 参数名参数名参数名参数名1 1,类型标志符类型标志符类型标志符类型标志符 参数名参数名参数名参数名2 2,函数体函数体函数体函数体:该函数功效详细实现过程。通常:该函数功效详细实现过程。通常:该函数功效详细实现过程。通常:该函数功效详细实现过程。通常包含若干变量定义和若干语句。函数体由包含若干变量定义和若干语句。函数体由包含若干变量定义和若干语句。函数体由包含若干变量定义和若干语

13、句。函数体由一对大括号和其中包含语句组组成。参数一对大括号和其中包含语句组组成。参数一对大括号和其中包含语句组组成。参数一对大括号和其中包含语句组组成。参数定义指不传值局部变量定义,大括号内可定义指不传值局部变量定义,大括号内可定义指不传值局部变量定义,大括号内可定义指不传值局部变量定义,大括号内可为空为空为空为空由类型标识符、由类型标识符、由类型标识符、由类型标识符、函数名和形参列函数名和形参列函数名和形参列函数名和形参列表组成部分称为表组成部分称为表组成部分称为表组成部分称为函数首部函数首部函数首部函数首部。第10页函数定义:例函数定义:例int MaxInt(int x,int y)in

14、t MaxInt(int x,int y)int z;int z;z=x y?x :y;z=x y?x :y;return(z);return(z);类型标志符类型标志符类型标志符类型标志符:此处为:此处为:此处为:此处为intint,表明该函数返回,表明该函数返回,表明该函数返回,表明该函数返回值类型是值类型是值类型是值类型是intint型。型。型。型。函数名函数名函数名函数名:为:为:为:为MaxIntMaxInt。以后就使用这个名字调以后就使用这个名字调以后就使用这个名字调以后就使用这个名字调用该函数。用该函数。用该函数。用该函数。形参列表形参列表形参列表形参列表:有:有:有:有2 2个

15、形参,分别个形参,分别个形参,分别个形参,分别是是是是intint型变量型变量型变量型变量x x和和和和intint型变量型变量型变量型变量y y。它们用于保留调用该函数时传它们用于保留调用该函数时传它们用于保留调用该函数时传它们用于保留调用该函数时传递进来输入信息。递进来输入信息。递进来输入信息。递进来输入信息。函数体函数体函数体函数体:实现该函数:实现该函数:实现该函数:实现该函数功效。对由调用者传递功效。对由调用者传递功效。对由调用者传递功效。对由调用者传递进来保留在形参中数据进来保留在形参中数据进来保留在形参中数据进来保留在形参中数据进行相关处理后,将结进行相关处理后,将结进行相关处理

16、后,将结进行相关处理后,将结果经过果经过果经过果经过returnreturn语句返语句返语句返语句返回给调用者。回给调用者。回给调用者。回给调用者。第11页8.3 8.3 函数参数和函数值函数参数和函数值第13页vv函数参数作用函数参数作用函数参数作用函数参数作用用于在调用某个函数时由调用者向该被调用函数用于在调用某个函数时由调用者向该被调用函数用于在调用某个函数时由调用者向该被调用函数用于在调用某个函数时由调用者向该被调用函数传递信息传递信息传递信息传递信息。函数参数函数参数vv对函数深入了解对函数深入了解对函数深入了解对函数深入了解能够把一个函数了解为一个能够把一个函数了解为一个能够把一个

17、函数了解为一个能够把一个函数了解为一个“黑箱黑箱黑箱黑箱”,使用者使用该,使用者使用该,使用者使用该,使用者使用该“黑箱黑箱黑箱黑箱”时,提供了加工信息输入到时,提供了加工信息输入到时,提供了加工信息输入到时,提供了加工信息输入到“黑箱黑箱黑箱黑箱”中,该中,该中,该中,该“黑箱黑箱黑箱黑箱”按照按照按照按照预先设计功效对接收到这些符合预定要求输入信息进行加工,预先设计功效对接收到这些符合预定要求输入信息进行加工,预先设计功效对接收到这些符合预定要求输入信息进行加工,预先设计功效对接收到这些符合预定要求输入信息进行加工,然后返回输出信息给使用者。然后返回输出信息给使用者。然后返回输出信息给使用

18、者。然后返回输出信息给使用者。函数函数函数函数输入输入输入输入信息信息信息信息输出输出输出输出信息信息信息信息 可见,要想形成一可见,要想形成一可见,要想形成一可见,要想形成一个函数,必须要设个函数,必须要设个函数,必须要设个函数,必须要设计好它能够接收什计好它能够接收什计好它能够接收什计好它能够接收什么样输入信息,又么样输入信息,又么样输入信息,又么样输入信息,又输出什么样信息,输出什么样信息,输出什么样信息,输出什么样信息,即必须设计好即必须设计好即必须设计好即必须设计好函数函数函数函数接口接口接口接口。第14页vv定义函数时出现在函数名后括号中参数即是形式参数。定义函数时出现在函数名后括

19、号中参数即是形式参数。定义函数时出现在函数名后括号中参数即是形式参数。定义函数时出现在函数名后括号中参数即是形式参数。之所以称为形式参数,是因为在定义函数时这些参数并不含之所以称为形式参数,是因为在定义函数时这些参数并不含之所以称为形式参数,是因为在定义函数时这些参数并不含之所以称为形式参数,是因为在定义函数时这些参数并不含有详细值,而只是代表某个数据类型一个变量。有详细值,而只是代表某个数据类型一个变量。有详细值,而只是代表某个数据类型一个变量。有详细值,而只是代表某个数据类型一个变量。函数形式参数函数形式参数vv函数形参作用函数形参作用函数形参作用函数形参作用形参就是函数输入接口:使用者在

20、调用该函数时提供输入信形参就是函数输入接口:使用者在调用该函数时提供输入信形参就是函数输入接口:使用者在调用该函数时提供输入信形参就是函数输入接口:使用者在调用该函数时提供输入信息被传递给对应形式参数,然后函数按照预先设计程序对形息被传递给对应形式参数,然后函数按照预先设计程序对形息被传递给对应形式参数,然后函数按照预先设计程序对形息被传递给对应形式参数,然后函数按照预先设计程序对形参进行处理,实际上就是对传递进来数据进行处理。参进行处理,实际上就是对传递进来数据进行处理。参进行处理,实际上就是对传递进来数据进行处理。参进行处理,实际上就是对传递进来数据进行处理。编写一个函数时很主要一个工作就

21、是要确定形参(数量、编写一个函数时很主要一个工作就是要确定形参(数量、类型、意义、作用)。类型、意义、作用)。第15页vv调用函数时出现在函数名后括号中参数即是实际参数。调用函数时出现在函数名后括号中参数即是实际参数。调用函数时出现在函数名后括号中参数即是实际参数。调用函数时出现在函数名后括号中参数即是实际参数。之所以称为实际参数,是因为在调用函数时这些参数必须含之所以称为实际参数,是因为在调用函数时这些参数必须含之所以称为实际参数,是因为在调用函数时这些参数必须含之所以称为实际参数,是因为在调用函数时这些参数必须含有实际值,才能用于去调用函数。实参能够使常量、变量或有实际值,才能用于去调用函

22、数。实参能够使常量、变量或有实际值,才能用于去调用函数。实参能够使常量、变量或有实际值,才能用于去调用函数。实参能够使常量、变量或表示式。表示式。表示式。表示式。函数实际参数函数实际参数vv调用函数时给出实参必须和形参一致调用函数时给出实参必须和形参一致调用函数时给出实参必须和形参一致调用函数时给出实参必须和形参一致实参必须和形参在数量、次序、类型上一致才能正确调用。实参必须和形参在数量、次序、类型上一致才能正确调用。实参必须和形参在数量、次序、类型上一致才能正确调用。实参必须和形参在数量、次序、类型上一致才能正确调用。第16页int func(int x,int y,char op)int

23、func(int x,int y,char op)int z;int z;switch(op)switch(op)case +:case +:z=x+y;break;z=x+y;break;case -:case -:z=x-y;z=x-y;break;break;case *:case *:z=x*y;z=x*y;break;break;case /:case /:z=x/y;z=x/y;break;break;return(z);return(z);函数参数:例函数参数:例resultresult =func(3,5,*);func(3,5,*);定义函数时参数是定义函数时参数是定义函数时

24、参数是定义函数时参数是形形形形式参数式参数式参数式参数。调用函数时参数是调用函数时参数是调用函数时参数是调用函数时参数是实实实实际参数际参数际参数际参数。第17页调用函数时,参数传递过程是由实参变量调用函数时,参数传递过程是由实参变量“单向值传递单向值传递”给对应形参变量。给对应形参变量。函数参数传递过程函数参数传递过程1.1.参数传递过程是参数传递过程是参数传递过程是参数传递过程是“单向单向单向单向”:即只由实参传递给形参,而不:即只由实参传递给形参,而不:即只由实参传递给形参,而不:即只由实参传递给形参,而不会在函数调用结束时由形参传回给实参。会在函数调用结束时由形参传回给实参。会在函数调

25、用结束时由形参传回给实参。会在函数调用结束时由形参传回给实参。所谓所谓所谓所谓“单向值传递单向值传递单向值传递单向值传递”包含两方面含义:包含两方面含义:包含两方面含义:包含两方面含义:2.2.参数传递过程中传递是参数传递过程中传递是参数传递过程中传递是参数传递过程中传递是“值值值值”:即只由实参将其值传递给:即只由实参将其值传递给:即只由实参将其值传递给:即只由实参将其值传递给对应形参。对应形参。对应形参。对应形参。第18页int func(int x,int y,char op)int func(int x,int y,char op)函数参数传递过程函数参数传递过程int a=3,b=5

26、,result;int a=3,b=5,result;charchar c=*;c=*;resultresult =func(a,b,c);func(a,b,c);单向单向单向单向值传递值传递值传递值传递在内存中,实参单元和形参单元是不一样单元。在内存中,实参单元和形参单元是不一样单元。在内存中,实参单元和形参单元是不一样单元。在内存中,实参单元和形参单元是不一样单元。在调用某函数之前,该函数形参并不存在,即不占据内存单在调用某函数之前,该函数形参并不存在,即不占据内存单在调用某函数之前,该函数形参并不存在,即不占据内存单在调用某函数之前,该函数形参并不存在,即不占据内存单元。只有当调用该函数

27、时,系统才给形参分配内存单元,并元。只有当调用该函数时,系统才给形参分配内存单元,并元。只有当调用该函数时,系统才给形参分配内存单元,并元。只有当调用该函数时,系统才给形参分配内存单元,并将实参值传递给对应形参。调用结束后,形参所占单元被释将实参值传递给对应形参。调用结束后,形参所占单元被释将实参值传递给对应形参。调用结束后,形参所占单元被释将实参值传递给对应形参。调用结束后,形参所占单元被释放,而实参单元仍存在并维持原来值放,而实参单元仍存在并维持原来值放,而实参单元仍存在并维持原来值放,而实参单元仍存在并维持原来值第19页函数参数传递过程函数参数传递过程3 35 5*3 35 5*调用函数

28、之前:调用函数之前:调用函数之前:调用函数之前:调用函数开始:调用函数开始:调用函数开始:调用函数开始:调用函数结束:调用函数结束:调用函数结束:调用函数结束:3 35 5*cbacbaopyx第20页vv函数返回值是指经过调用函数得到一个值。函数返回值是指经过调用函数得到一个值。函数返回值是指经过调用函数得到一个值。函数返回值是指经过调用函数得到一个值。注意:并不是全部函数都返回值。注意:并不是全部函数都返回值。注意:并不是全部函数都返回值。注意:并不是全部函数都返回值。函数返回值函数返回值vv函数返回值是经过函数中函数返回值是经过函数中函数返回值是经过函数中函数返回值是经过函数中retur

29、nreturn语句取得。语句取得。语句取得。语句取得。returnreturn语句只能位于函数体内,它使函数调用结束并把被调语句只能位于函数体内,它使函数调用结束并把被调语句只能位于函数体内,它使函数调用结束并把被调语句只能位于函数体内,它使函数调用结束并把被调用函数内一个确定值作为函数值带回给主调函数。用函数内一个确定值作为函数值带回给主调函数。用函数内一个确定值作为函数值带回给主调函数。用函数内一个确定值作为函数值带回给主调函数。函数函数函数函数输入输入输入输入信息信息信息信息输出输出输出输出信息信息信息信息 vvreturnreturn使用方法:使用方法:使用方法:使用方法:return

30、(return(表示式表示式表示式表示式););returnreturn语句执行过程:首先求解括号内表示式,然后使对该语句执行过程:首先求解括号内表示式,然后使对该语句执行过程:首先求解括号内表示式,然后使对该语句执行过程:首先求解括号内表示式,然后使对该函数该次调用结束,同时将表示式值返回给调用者。函数该次调用结束,同时将表示式值返回给调用者。函数该次调用结束,同时将表示式值返回给调用者。函数该次调用结束,同时将表示式值返回给调用者。编写一个函数时另编写一个函数时另一个主要工作就是一个主要工作就是要确定怎样返回值要确定怎样返回值及返回什么值。及返回什么值。第21页int func(int x

31、,int y,char op)int func(int x,int y,char op)int z;int z;switch(op)switch(op)case +:case +:z=x+y;break;z=x+y;break;case -:case -:z=x-y;z=x-y;break;break;case *:case *:z=x*y;z=x*y;break;break;case /:case /:z=x/y;z=x/y;break;break;return(z);return(z);函数返回值:例函数返回值:例resultresult =func(3,5,*);func(3,5,*);

32、returnreturn返回变量返回变量返回变量返回变量z z值,则调用该函数值,则调用该函数值,则调用该函数值,则调用该函数得到值就是变量得到值就是变量得到值就是变量得到值就是变量z z值。值。值。值。调用该得到值被赋值调用该得到值被赋值调用该得到值被赋值调用该得到值被赋值给变量给变量给变量给变量resultresult。第22页相关函数返回值说明:相关函数返回值说明:相关函数返回值说明:相关函数返回值说明:函数返回值说明函数返回值说明标准就是:定义一个函数时必须要明确它返回值类型。标准就是:定义一个函数时必须要明确它返回值类型。标准就是:定义一个函数时必须要明确它返回值类型。标准就是:定义

33、一个函数时必须要明确它返回值类型。1.1.一个函数用一个函数用一个函数用一个函数用returnreturn语句只能返回一个值。语句只能返回一个值。语句只能返回一个值。语句只能返回一个值。return return 语句语句语句语句是一个是一个是一个是一个显式显式显式显式返回值方法。返回值方法。返回值方法。返回值方法。2.2.一个函数中可能有多个一个函数中可能有多个一个函数中可能有多个一个函数中可能有多个returnreturn语句,但只可能有一个被语句,但只可能有一个被语句,但只可能有一个被语句,但只可能有一个被执行到。执行到。执行到。执行到。3.3.返回值类型由函数定义时类型决定。返回值类型

34、由函数定义时类型决定。返回值类型由函数定义时类型决定。返回值类型由函数定义时类型决定。4.4.函数中能够没有函数中能够没有函数中能够没有函数中能够没有returnreturn语句,则函数执行完最终一个语语句,则函数执行完最终一个语语句,则函数执行完最终一个语语句,则函数执行完最终一个语5.5.句结束,不以显著形式带回值。这时必须把函数定义句结束,不以显著形式带回值。这时必须把函数定义句结束,不以显著形式带回值。这时必须把函数定义句结束,不以显著形式带回值。这时必须把函数定义为为为为voidvoid类型,表示该函数不会类型,表示该函数不会类型,表示该函数不会类型,表示该函数不会显式显式显式显式返

35、回任何值。返回任何值。返回任何值。返回任何值。6.6.5 5。函数定义时无返回值类型,默认返回值类型是。函数定义时无返回值类型,默认返回值类型是。函数定义时无返回值类型,默认返回值类型是。函数定义时无返回值类型,默认返回值类型是 int int7.7.必须有必须有必须有必须有returnreturn语句带一个整数语句带一个整数语句带一个整数语句带一个整数第23页8.4 8.4 函数调用函数调用第27页vv函数调用普通形式为:函数调用普通形式为:函数调用普通形式为:函数调用普通形式为:函数名函数名函数名函数名(实参列表实参列表实参列表实参列表););假如是无参函数,则没有实参列表,不过括号不能省

36、略;假如是无参函数,则没有实参列表,不过括号不能省略;假如是无参函数,则没有实参列表,不过括号不能省略;假如是无参函数,则没有实参列表,不过括号不能省略;假如实参多于一个,则用逗号分隔。假如实参多于一个,则用逗号分隔。假如实参多于一个,则用逗号分隔。假如实参多于一个,则用逗号分隔。调用函数方法调用函数方法调用一个函数时,一定要确保实参和形参一致,即在参数调用一个函数时,一定要确保实参和形参一致,即在参数数量、类型和次序上都要一致。数量、类型和次序上都要一致。调用一个函数时,要发生由实参到形参调用一个函数时,要发生由实参到形参“单向值传递单向值传递”参参数传递过程。数传递过程。?为何用函数名就能

37、为何用函数名就能为何用函数名就能为何用函数名就能够调用一个函数够调用一个函数够调用一个函数够调用一个函数因为函数名中包含了该函数入口因为函数名中包含了该函数入口地址信息,即函数名是一个指向地址信息,即函数名是一个指向函数入口地址常量指针。函数入口地址常量指针。第28页vv函数调用内部过程是:函数调用内部过程是:函数调用内部过程是:函数调用内部过程是:出现函数调用时,主调函数执行过程暂时停顿,在进行了出现函数调用时,主调函数执行过程暂时停顿,在进行了出现函数调用时,主调函数执行过程暂时停顿,在进行了出现函数调用时,主调函数执行过程暂时停顿,在进行了必要必要必要必要“现场现场现场现场”保留工作后,

38、转去执行被调用函数代码,待保留工作后,转去执行被调用函数代码,待保留工作后,转去执行被调用函数代码,待保留工作后,转去执行被调用函数代码,待被调用函数执行完成返回后,首先恢复刚才保留被调用函数执行完成返回后,首先恢复刚才保留被调用函数执行完成返回后,首先恢复刚才保留被调用函数执行完成返回后,首先恢复刚才保留“现场现场现场现场”,然后继续主调函数执行。然后继续主调函数执行。然后继续主调函数执行。然后继续主调函数执行。函数调用内部过程函数调用内部过程主调函数主调函数主调函数主调函数被调函数被调函数被调函数被调函数函数调用函数调用函数调用函数调用被调函数开始被调函数开始被调函数开始被调函数开始被调函

39、数结束被调函数结束被调函数结束被调函数结束(传递参数传递参数传递参数传递参数)(返回函数值返回函数值返回函数值返回函数值)第29页成功调用函数条件成功调用函数条件函数原型:函数首部带分号函数原型:函数首部带分号函数调用语句之前程序行,被调用函数已经定义函数调用语句之前程序行,被调用函数已经定义函数调用语句之前程序行,被调用函数已经定义函数调用语句之前程序行,被调用函数已经定义;或者被调用或者被调用或者被调用或者被调用函数原型已经申明,而且后面程序行有被调用函数定义函数原型已经申明,而且后面程序行有被调用函数定义函数原型已经申明,而且后面程序行有被调用函数定义函数原型已经申明,而且后面程序行有被

40、调用函数定义进行函数原型申明目标在于:让主调函数知道被调函数名字、进行函数原型申明目标在于:让主调函数知道被调函数名字、进行函数原型申明目标在于:让主调函数知道被调函数名字、进行函数原型申明目标在于:让主调函数知道被调函数名字、形式参数(数量、类型和次序)以及函数返回值类型。形式参数(数量、类型和次序)以及函数返回值类型。形式参数(数量、类型和次序)以及函数返回值类型。形式参数(数量、类型和次序)以及函数返回值类型。(1)(1)(1)(1)假如调用是系统库函数,则必须加上对应头文件,其假如调用是系统库函数,则必须加上对应头文件,其假如调用是系统库函数,则必须加上对应头文件,其假如调用是系统库函

41、数,则必须加上对应头文件,其(2)(2)(2)(2)中有库函数原型申明;中有库函数原型申明;中有库函数原型申明;中有库函数原型申明;(3)(3)(3)(3)(2 2 2 2)假如调用是用户自定义函数,则必须在调用之前对被)假如调用是用户自定义函数,则必须在调用之前对被)假如调用是用户自定义函数,则必须在调用之前对被)假如调用是用户自定义函数,则必须在调用之前对被(4)(4)(4)(4)调函数进行函数原型申明。申明能够放在主调函数函调函数进行函数原型申明。申明能够放在主调函数函调函数进行函数原型申明。申明能够放在主调函数函调函数进行函数原型申明。申明能够放在主调函数函(5)(5)(5)(5)数体

42、中,也能够放在全部函数外面源程序文件开头地方。数体中,也能够放在全部函数外面源程序文件开头地方。数体中,也能够放在全部函数外面源程序文件开头地方。数体中,也能够放在全部函数外面源程序文件开头地方。第30页1.1.函数原型申明方法函数原型申明方法函数原型申明方法函数原型申明方法2.2.函数返回值类型函数返回值类型函数返回值类型函数返回值类型 函数名函数名函数名函数名(形参列表形参列表形参列表形参列表););3.3.形参列表能够只是形参类型列表,不指出形参名字形参列表能够只是形参类型列表,不指出形参名字形参列表能够只是形参类型列表,不指出形参名字形参列表能够只是形参类型列表,不指出形参名字函数原型

43、申明方法和位置函数原型申明方法和位置2.2.函数原型申明位置:函数原型申明位置:函数原型申明位置:函数原型申明位置:(1)(1)(1)(1)放在主调函数函数体中,在调用该函数之前;放在主调函数函数体中,在调用该函数之前;放在主调函数函数体中,在调用该函数之前;放在主调函数函数体中,在调用该函数之前;(2)(2)(2)(2)缺点:每个想调用该函数函数都要在自己函数体中进缺点:每个想调用该函数函数都要在自己函数体中进缺点:每个想调用该函数函数都要在自己函数体中进缺点:每个想调用该函数函数都要在自己函数体中进行原型申明行原型申明行原型申明行原型申明(2)(2)(2)(2)放在全部函数外面,源程序文件

44、开头地方。(惯用)放在全部函数外面,源程序文件开头地方。(惯用)放在全部函数外面,源程序文件开头地方。(惯用)放在全部函数外面,源程序文件开头地方。(惯用)优点:凡是在该申明之后定义函数,无需再进行函数原优点:凡是在该申明之后定义函数,无需再进行函数原优点:凡是在该申明之后定义函数,无需再进行函数原优点:凡是在该申明之后定义函数,无需再进行函数原 型申明即可调用该函数型申明即可调用该函数型申明即可调用该函数型申明即可调用该函数第31页int func(int x,int y,char op)int func(int x,int y,char op)函数原型申明:例函数原型申明:例void ma

45、in()void main()int a=3,b=5,result;int a=3,b=5,result;int func(int x,int y,char op);int func(int x,int y,char op);result result =func(a,b,*);func(a,b,*);在主调函数里,调在主调函数里,调在主调函数里,调在主调函数里,调用该函数之前进行用该函数之前进行用该函数之前进行用该函数之前进行函数原型申明函数原型申明函数原型申明函数原型申明。注意:有分号注意:有分号注意:有分号注意:有分号注意:没有分号注意:没有分号注意:没有分号注意:没有分号第32页int

46、 func(int x,int y,char op)int func(int x,int y,char op)函数原型申明:例函数原型申明:例int func(int x,int y,char op);int func(int x,int y,char op);void main()void main()int a=3,b=5,result;int a=3,b=5,result;result result =func(a,b,*);func(a,b,*);在全部函数之外,在全部函数之外,在全部函数之外,在全部函数之外,源程序文件开头进源程序文件开头进源程序文件开头进源程序文件开头进行行行行函数

47、原型申明函数原型申明函数原型申明函数原型申明。注意:有分号注意:有分号注意:有分号注意:有分号注意:没有分号注意:没有分号注意:没有分号注意:没有分号第33页8.5 8.5 函数嵌套调用函数嵌套调用第34页vv C C 语言函数定义是平行、独立,函数定义不能嵌套。语言函数定义是平行、独立,函数定义不能嵌套。语言函数定义是平行、独立,函数定义不能嵌套。语言函数定义是平行、独立,函数定义不能嵌套。即:在一个函数定义函数体中,不能再定义另一个函数。即:在一个函数定义函数体中,不能再定义另一个函数。即:在一个函数定义函数体中,不能再定义另一个函数。即:在一个函数定义函数体中,不能再定义另一个函数。ma

48、in()main()int a();int b();.int a();int b();.函数嵌套调用函数嵌套调用vv C C 语言函数调用能够嵌套。语言函数调用能够嵌套。语言函数调用能够嵌套。语言函数调用能够嵌套。即:在一个函数定义函数体中,能够调用另一个函数。即:在一个函数定义函数体中,能够调用另一个函数。即:在一个函数定义函数体中,能够调用另一个函数。即:在一个函数定义函数体中,能够调用另一个函数。主调函数主调函数主调函数主调函数函数函数函数函数1 1函数调用函数调用函数调用函数调用函数调用函数调用函数调用函数调用函数函数函数函数2 2第35页函数嵌套调用:例函数嵌套调用:例float P

49、ower(int x,int y)float Power(int x,int y)float PowerMax(int x,int y)float PowerMax(int x,int y)float pow_xy,pow_yx;float pow_xy,pow_yx;pow_xy=pow_xy=Power(x,y)Power(x,y);pow_yx=pow_yx=Power(y,x)Power(y,x);printf(“%d,%d”,x,y);printf(“%d,%d”,x,y);if(pow_xy=pow_yx)return(pow_xy);if(pow_xy=pow_yx)return

50、(pow_xy);else return(pow_yx);else return(pow_yx);嵌套调用自定义嵌套调用自定义嵌套调用自定义嵌套调用自定义函数函数函数函数PowerPowermain().PowerMax(3,4)PowerMax(3,4);.主调函数局部变量主调函数局部变量主调函数局部变量主调函数局部变量与与与与被调函数局部变被调函数局部变被调函数局部变被调函数局部变量同名,是允许,量同名,是允许,量同名,是允许,量同名,是允许,因为它们是在不一因为它们是在不一因为它们是在不一因为它们是在不一样函数中定义样函数中定义样函数中定义样函数中定义.进入进入进入进入被调函数主调函数被

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服