c语言第八章函数.ppt
《c语言第八章函数.ppt》由会员分享,可在线阅读,更多相关《c语言第八章函数.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.我的程序有上百行,如何调试最方便?我的程序有上百行,如何调试最方便?2.我想设计一个程序完成下面的计算:我想设计一个程序完成下面的计算:3.其中,其中,m、n为正整数且为正整数且mn4.该如何设计程序最有效?该如何设计程序最有效?m!n!(m-n)!内容提要:内容提要:概述概述 函数的定义函数的定义 函数参数函数参数(变量、数组变量、数组)和函数值和函数值 函数的调用函数的调用函数的嵌套调用函数的嵌套调用 局部变量和全局变量及变量的存储类别局部变量和全局变量及变量的存储类别8.1 概述概述C程序的结构如图所示程序的结构如图所示1.一个一个C程序可以分为若干个函数程序可以分为若干个函数2.每
2、个程序有且只能有一个主函数每个程序有且只能有一个主函数(main),其它函数都是,其它函数都是“子函数子函数”3.子函数可以互相调用,但主函数子函数可以互相调用,但主函数不能被调用不能被调用4.一个一个C程序由一个或多个文件构程序由一个或多个文件构成,一个源程序文件是一个编译成,一个源程序文件是一个编译单位单位说明:说明:1.C程序的执行从程序的执行从main函数开始函数开始,调用其它函数后仍回到调用其它函数后仍回到main函函数,程序在数,程序在main函数结束时结函数结束时结束。束。2.所有子函数都是平行的,任何所有子函数都是平行的,任何子函数都不属于其它函数。子函数都不属于其它函数。3.
3、从用户角度看,函数可分为:从用户角度看,函数可分为:u标准函数,即库函数标准函数,即库函数u自定义函数自定义函数4.从函数形式看,可分为:从函数形式看,可分为:u无参数函数无参数函数:如如printstar()u有参数函数有参数函数:如如printf()例例8-1#include“stdio.h”void printstar()printf(“*n”);void printmessage()printf(“Hello,world.n”);printstar();void main()printstar();printmessage();*Hello,world.*函数定义的一般形式:函数定义的
4、一般形式:类型说明类型说明 函数名函数名(形式参数说明形式参数说明)函数体函数体形式参数说明方法:形式参数说明方法:类型说明类型说明 变量名变量名,类型说明类型说明 变量名变量名1、无参数的定义形式、无参数的定义形式 类型说明类型说明 函数名函数名()函数体函数体2、有参数的定义形式、有参数的定义形式 类型说明类型说明 函数名函数名(形式参数说明形式参数说明)函数体函数体3、空函数的定义形式、空函数的定义形式 类型说明类型说明 函数名函数名 (形式参数说明形式参数说明)#include“stdio”int max(int x,int y)int z;z=(xy)?x:y;return(z);v
5、oid main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c0);8.2 函数定义的一般形式函数定义的一般形式例如:例如:int sum(int x,int y)int z;z=x+y;return(z);又如又如void printhello(char name)printf(“Hello,%sn”,name);函数定义的一般形式:函数定义的一般形式:类型说明类型说明 函数名函数名(形式参数说明形式参数说明)函数体函数体n一般情况下,函数体由两部分组成:一般情况下,函数体由两部分组成:局部变量说明局部变量说明 语
6、句语句 n局部变量:局部变量:函数体内定义的变量。其有效范围仅函数体内定义的变量。其有效范围仅限于所在函数的内部,离开函数体则无限于所在函数的内部,离开函数体则无意义。意义。例如:例如:int sum(int x,int y)int z;z=x+y;return(z);又如又如void printhello(char name)printf(“Hello,%sn”,name);8.3 函数参数和函数的值函数参数和函数的值 一个一个C程序由若干个函数组成,程序由若干个函数组成,各函数调用时经常需要传递一些各函数调用时经常需要传递一些数据。即调用函数把数据传递给数据。即调用函数把数据传递给被调用函
7、数,经被调用函数处理被调用函数,经被调用函数处理后,得到一个确定的结果,在返后,得到一个确定的结果,在返回调用函数时,把这结果带回调回调用函数时,把这结果带回调用函数。用函数。a,bz各函数间的信息往来是由各函数间的信息往来是由参数传递参数传递和和返回语句返回语句实现的实现的主调函数主调函数被调函数被调函数一、形式参数和实际参数一、形式参数和实际参数 函数参数函数参数:用于函数间数据的传递用于函数间数据的传递形式参数形式参数:定义定义函数时使用的参数函数时使用的参数实际参数实际参数:调用调用函数时使用的参数函数时使用的参数 函数函数max有两个形式参数有两个形式参数x和和y形参形参x和和y只是
8、在函数只是在函数max中使用中使用 a和和b是主函数中定义的变量是主函数中定义的变量 main调用函数调用函数max a和和b为函数为函数max的实参的实参#include“stdio”int max(int x,int y)int z;z=(xy)?x:y;return(z);void main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c0);59 95Max is 95一、形式参数和实际参数一、形式参数和实际参数 说明:说明:1、定义函数时,必须说明形参的类型。、定义函数时,必须说明形参的类型。形参只能是形参只
9、能是变量变量或或数组数组2、函数被调用前,形参不占用内存;、函数被调用前,形参不占用内存;函数调用结束后,形参所占用的内存函数调用结束后,形参所占用的内存也将被收回。也将被收回。3、实参可以是、实参可以是常量常量、变量变量或或表达式表达式。4、实参也形参的类型必须一致实参也形参的类型必须一致。字符。字符型和整型可以互相匹配。型和整型可以互相匹配。5、C语言中实参对形参的数据传递是语言中实参对形参的数据传递是“值传递值传递”,即单向传递。它仅由参,即单向传递。它仅由参数数的对应位置确定,与名字无关。的对应位置确定,与名字无关。#include“stdio”int max(int x,int y)
10、int z;z=(xy)?x:y;return(z);void main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c0);int max(int b,int a)int c;z=(ab)?a:b;return(c);一、形式参数和实际参数一、形式参数和实际参数例例8-3 读程序,写出运行结果读程序,写出运行结果Sum of 1,3 is 4Sum of 1,3 is 4一、形式参数和实际参数一、形式参数和实际参数二、函数的返回值二、函数的返回值 1、返回函数值的方法、返回函数值的方法 函数的返回值也就是函数值,是函
11、数的返回值也就是函数值,是 一个确定的值。一个确定的值。如果一个函数由返回值,就必如果一个函数由返回值,就必 须使用须使用return语句。语句。一个函数中可以有一个函数中可以有 一个以上的一个以上的 return语句,但不论执行到哪个语句,但不论执行到哪个 return都将结束函数的调用返回都将结束函数的调用返回 主函数。主函数。return语句中的括号可以省略;语句中的括号可以省略;return后面的值可以是一个表后面的值可以是一个表 达式。达式。#include“stdio”int max(int x,int y)int z;z=(xy)?x:y;return(z);void main(
12、)int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c);if(xy)return x;return y;return (xy?x:y);二、函数的返回值二、函数的返回值1、返回函数值的方法、返回函数值的方法2、函数值的类型、函数值的类型 函数的类型即函数值的类型。例函数的类型即函数值的类型。例如,函数如,函数max是是int型的也就是函型的也就是函数值是数值是int型的。型的。省略了类型说明的函数是省略了类型说明的函数是int型的。型的。return语句中表达式的值一般应与语句中表达式的值一般应与函数类型一致。函数类型一致。
13、如果不一致,则需要进行类型转换。如果不一致,则需要进行类型转换。只有数值型数据可以进行自动类型只有数值型数据可以进行自动类型转换,以函数类型为准。转换,以函数类型为准。#include“stdio”int max(int x,int y)int z;z=(xy)?x:y;return(z);void main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c0);二、函数的返回值二、函数的返回值1、返回函数值的方法、返回函数值的方法2、函数值的类型、函数值的类型3、不需要返回值的函数、不需要返回值的函数 如果函数中没有使
14、用如果函数中没有使用return语句,函数返回的是一个不语句,函数返回的是一个不确定的数值。确定的数值。(参见例参见例8-1)如果一个函数不需要返回值如果一个函数不需要返回值(表示一个过程表示一个过程),可以用,可以用void做类型说明。做类型说明。如果一个函数被声明为如果一个函数被声明为void类类型,就不允许再引用它的返回值型,就不允许再引用它的返回值(即只能用函数语句形式调用即只能用函数语句形式调用)。例例8-1#include“stdio.h”void printstar()printf(“*n”);void printmessage()printf(“Hello,world.n”);
15、printstar();void main()printstar();printmessage();8.4 函数的调用函数的调用一、函数调用的一般形式一、函数调用的一般形式 一般形式:一般形式:函数名函数名(实参表列实参表列)说明:说明:如果调用无参函数,实参表列如果调用无参函数,实参表列可以忽略,但括号不能省。可以忽略,但括号不能省。实参的个数和形参一般相等。实参的个数和形参一般相等。实参与形参的类型应一一对应,实参与形参的类型应一一对应,必要时使用类型转换。必要时使用类型转换。注意:不同系统中,实参的计算注意:不同系统中,实参的计算顺序不同。微机上一般是从右顺序不同。微机上一般是从右到左。
16、为避免由此引起的混乱,到左。为避免由此引起的混乱,一般应在调用函数前计算出实一般应在调用函数前计算出实参的值。参的值。#include“stdio”int max(int x,int y)int z;z=(xy)?x:y;return(z);void main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b)printf(“Max is%dn”,c0);float max(float x,float y)float z;z=(x0?x;-x);void main()float x=-1.2,y;y=iabs(x)printf(“x=%f,iabs(x)=%fn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第八 函数
限制150内