分校第讲函数.ppt
《分校第讲函数.ppt》由会员分享,可在线阅读,更多相关《分校第讲函数.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、分校课件第讲函数分校课件第讲函数现在学习的是第1页,共48页C C语言的函数语言的函数在在C语言中,语言中,函数函数(function)是构成程序的基本模块。是构成程序的基本模块。一个一个C程序由一个或多个函数组成,有且仅有一个主函数,程序由一个或多个函数组成,有且仅有一个主函数,即即main()函数。函数。每个函数完成一个相对独立且功能明确的任务。每个函数完成一个相对独立且功能明确的任务。由主函数调用其他函数,其他函数也可以互相调用。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。同一个函数可以被一个或多个函数调用任意多次。函数函数mainfun_a
2、fun_bfun_cfun_cfun_dfun_efun_ffun_d现在学习的是第3页,共48页二二.用户自定义函数用户自定义函数1.函数分类(从函数的形式看)无参函数有参函数函数定义时无参数说明调用无参函数一般用来执行指定的一组操作主调函数不传送数据给被调函数函数定义时定义了一个或一个以上的参数调用时将要处理的数据传送给被调函数空函数定义时既无参数也无执行语句被调用时,不执行任何操作就立即返回 6.2 函数的定义函数的定义现在学习的是第4页,共48页C C语言的函数语言的函数C语言的函数有两大类:语言的函数有两大类:标准库函数标准库函数编译系统提供了丰富的函数。编译系统提供了丰富的函数。例
3、如例如数学计算:数学计算:sqrt(),abs()输入输入/输出:输出:scanf(),printf()自定义函数自定义函数程序员自己可以编写函数来完成特定的任务。程序员自己可以编写函数来完成特定的任务。应该熟悉应该熟悉C系统中的标准函数库。系统中的标准函数库。应该避免从零开始构建一切。应该避免从零开始构建一切。注意使用时要按规定的格式进行使用。注意使用时要按规定的格式进行使用。函数函数现在学习的是第5页,共48页为什么使用函数为什么使用函数函数使程序模块化。函数使程序模块化。程序采用模块化结构的好处:程序采用模块化结构的好处:分而治之分而治之提高程序开发的效率。改进性能。提高程序开发的效率。
4、改进性能。使程序易于管理和集中控制。使程序易于管理和集中控制。代码重用代码重用使用现有的函数作为构件来创建程序。使用现有的函数作为构件来创建程序。函数可以被重复使用。避免重复代码段降低了复杂性。函数可以被重复使用。避免重复代码段降低了复杂性。抽象抽象隐藏了实现的细节隐藏了实现的细节(数据结构数据结构,顺序、指针顺序、指针,全局变量全局变量)。进行参数传。进行参数传递。递。函数函数我们使用库函数(我们使用库函数(printf()),并不知道它的具体实现方法,却并不影响),并不知道它的具体实现方法,却并不影响对他的使用。对他的使用。例如例如现在学习的是第6页,共48页案例分析:一个简单的函数案例分
5、析:一个简单的函数编写和使用一个简单的函数编写和使用一个简单的函数(cw0801.c)定义一个函数定义一个函数square,用来计算任意整数的平方。,用来计算任意整数的平方。然后,使用该函数计算从然后,使用该函数计算从1到到10所有整数的平方。所有整数的平方。函数函数#include int square(int);int main()int x;for(x=1;x=10;x+)printf(%d,square(x);return 0;int square(int y)/定义平方函数定义平方函数 return y*y;声明函数声明函数使用函数使用函数1 4 9 16 25 36 49 64 8
6、1 100如果函数在主调函数之后定义,则使用前必须先声明函数原形。现在学习的是第7页,共48页函数的定义函数的定义定义函数的格式定义函数的格式()函数名:一个有效的标识符。函数名:一个有效的标识符。函数类型:返回值的类型说明符。函数类型:返回值的类型说明符。如果不指定,即缺省,就是如果不指定,即缺省,就是 int。最好不省略。最好不省略。C99不允许省。不允许省。void:表示函数不返回任何值。不可省。:表示函数不返回任何值。不可省。参数表:声明参数,多个参数用逗号分隔。参数表:声明参数,多个参数用逗号分隔。接收传递进来的数据。接收传递进来的数据。必须为每个参数指定数据类型。必须为每个参数指定
7、数据类型。int 可以省略。但最好不要省略。可以省略。但最好不要省略。函数函数函数头函数头函数体函数体Void 能用在:能用在:1、对函数返回的限定对函数返回的限定;2、对函数参数的限定对函数参数的限定。3、指针的限定指针的限定现在学习的是第8页,共48页函数的定义函数的定义函数体:包括声明语句和可执行语句。函数体:包括声明语句和可执行语句。在函数体内可以定义变量。在函数体内可以定义变量。不能定义函数,即函数的定义不允许嵌套。不能定义函数,即函数的定义不允许嵌套。控制返回:结束执行,把程序的控制交还主调函数,控制返回:结束执行,把程序的控制交还主调函数,也可以用也可以用return返回一个数值
8、。返回一个数值。return;return;如:如:return(x y?x:y);函数函数无返回值,只返回控制权无返回值,只返回控制权有返回值有返回值如果函数无参数如果函数无参数,那么应声明其参数为那么应声明其参数为void:Int function(void)return 1;现在学习的是第9页,共48页案例分析:函数的定义案例分析:函数的定义函数的定义函数的定义(cw0802.c)定义函数找出三个数中的大数。定义函数找出三个数中的大数。函数函数#include int maximum(int x,int y,int z);int main()int a,b,c;printf(“input
9、 three integers:);scanf(%d%d%d,&a,&b,&c);printf(“Maximum is:%dn”,maximum(a,b,c);return 0;int maximum(int x,int y,int z)int max=x;if(ymax)max=y;if(zmax)max=z;return max;maximumintintintint函数原型函数原型接口接口(interface)声明函数原形必须加;return(max)括号可省括号可省return(x y?x:y);现在学习的是第10页,共48页函数原型函数原型函数原型函数原型();用来对函数进行声明。用
10、来对函数进行声明。编译器使用函数原型来检查函数调用的合法性。编译器使用函数原型来检查函数调用的合法性。注意:函数原型要与函数的定义一致。注意:函数原型要与函数的定义一致。例如例如int maximum(int a,int b,int c);int maximum(int,int,int);函数函数在使用自定义函数时,除了进行定义之外,还要对被调用函数进在使用自定义函数时,除了进行定义之外,还要对被调用函数进行说明,说明函数类型、名称和参数类型,这称为函数原形。如行说明,说明函数类型、名称和参数类型,这称为函数原形。如果被调用函数在调用函数之后定义果被调用函数在调用函数之后定义,则必须先声明原形
11、则必须先声明原形.现在学习的是第11页,共48页函数原型函数原型函数原型在程序文件中的位置不同,作用范围不同函数原型在程序文件中的位置不同,作用范围不同在所有函数的外面在所有函数的外面在调用函数内部在调用函数内部函数函数main()void funcA()int funcB(int);int funcB(int)函数原形在函数外声明,其作函数原形在函数外声明,其作用范围从声明处开始,至程序用范围从声明处开始,至程序结束。结束。在函数中声明,只能在函数中在函数中声明,只能在函数中起作用。起作用。现在学习的是第12页,共48页函数原型函数原型如果程序中没有包含函数原型。如果程序中没有包含函数原型。
12、编译程序会使用该函数第一次出现的情形来形成自己的函编译程序会使用该函数第一次出现的情形来形成自己的函数原型。数原型。函数的定义在前函数的定义在前函数的调用在后函数的调用在后默认情况下,编译程序假定函数返回默认情况下,编译程序假定函数返回int型的结果,但不会型的结果,但不会对参数进行任何假定。对参数进行任何假定。如果传递给函数的参数不正确,编译程序不会检查到这些错误。如果传递给函数的参数不正确,编译程序不会检查到这些错误。函数函数不要省略返回值的类型,如果函数没有返回值,那么应声明为不要省略返回值的类型,如果函数没有返回值,那么应声明为void类型。类型。现在学习的是第13页,共48页函数原型
13、函数原型函数原型强迫参数采用正确的数据类型。函数原型强迫参数采用正确的数据类型。举例举例printf(“%.3f”,sqrt(4);函数原型使编译程序把整数值函数原型使编译程序把整数值4转换为转换为double型的值型的值4.0没有与函数原型中的参数类型完全对应的参数值会在调用没有与函数原型中的参数类型完全对应的参数值会在调用函数之前被转换成合适的数据类型。函数之前被转换成合适的数据类型。遵守遵守C语言的提升规则。语言的提升规则。函数函数double sqrt(double);现在学习的是第14页,共48页函数原型与头文件函数原型与头文件头文件头文件每个标准库函数都有对应的头文件。每个标准库函
14、数都有对应的头文件。包含了标准库中所有函数的函数原型,包含了标准库中所有函数的函数原型,以及那些函数所需的数据类型和常量的定义。以及那些函数所需的数据类型和常量的定义。使用使用#include命令把头文件包含到程序文件中:命令把头文件包含到程序文件中:#include 例如,例如,#include 程序员可以创建自己的头文件程序员可以创建自己的头文件使用使用.h扩展名。扩展名。使用下面的命令格式包含头文件:使用下面的命令格式包含头文件:#include“文件名文件名”例如,例如,#include“abc.h”函数函数尖括号指只在include文件夹下查找文件夹下查找引号指先在本程序所在先在本程
15、序所在文件夹查找,再在include文件夹下查找文件夹下查找现在学习的是第15页,共48页形参形参形参形参函数函数int max(int a,int b)int c=a=b?a:b;return c;int main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);return 0;实参实参实参实参形式参数形式参数 简称简称“形参形参”。在。在定义被调函数时定义被调函数时定义,定义,表示可以接受传递过来的值。只能表示可以接受传递过来的值。只能是变量形式。是变量形式。v只有在函数被调用、启动后,才只有在函数被调用、启动后,才临时为其分配存储单元,并接受主临时为
16、其分配存储单元,并接受主调函数传来的数据。调函数传来的数据。v在函数调用结束后,形参所占存储单在函数调用结束后,形参所占存储单元被释放元被释放,即值不保留,即值不保留。实际参数:简称实际参数:简称“实参实参”。在。在函数调用时函数调用时给给出。出。v实参是函数调用时主调函数传送给被实参是函数调用时主调函数传送给被调函数形参的实际值。调函数形参的实际值。v实参可以是常量、变量和表达式实参可以是常量、变量和表达式v但实参必须有确定的值。但实参必须有确定的值。如有多个形参或者多个实参,参数之间用逗号分隔。不能用其他符号。如有多个形参或者多个实参,参数之间用逗号分隔。不能用其他符号。现在学习的是第16
17、页,共48页参数传递参数传递参数传递的顺序。参数传递的顺序。函数函数int max(int a,int b)int c=a=b?a:b;printf(%d,%d,%dn,c,a,b);return c;int main()int x=6,y;y=max(x,x+);printf(“x=%d,y=%dn,x,y);return 0;v当实参表列中有多个实参时,对实参的当实参表列中有多个实参时,对实参的求值顺序求值顺序,C语言未规定。语言未规定。vVC和和BC是按从右往左的顺序求值。是按从右往左的顺序求值。b=x+;a=x;6,6,6X=7,y=6在参数传递时在参数传递时x=6,传递完成后才加传递
18、完成后才加1b=+x;a=x;7,7,7X=7,y=7cw0802_x.c如改为如改为在参数传递时在参数传递时x=7,传传递的递的a,b都为都为7现在学习的是第17页,共48页参数传递参数传递参数传递的影响。参数传递的影响。函数函数int max(int a,int b)int c=a=b?a:b;a+;b+;printf(%d,%d,%dn,a,b,c);return c;int main()int a=6,b=5,c;c=max(a,b);printf(“%d,%d,%d”,a,b,c);return 0;v实参与形参不共用存储单元。实参与形参不共用存储单元。v参数传递时,把实参的值复制一
19、份给形参数传递时,把实参的值复制一份给形参。参。v形参值的变化不影响实参的值。形参值的变化不影响实参的值。v所以,形参和实参可以同名。所以,形参和实参可以同名。max6a5b7a6bmaincw0802_y.c而返回值而返回值总是总是67,6,66,5,6主函数main中函数max中现在学习的是第18页,共48页值传递和引用传递值传递和引用传递函数间参数的传递有两种类型:函数间参数的传递有两种类型:值传递值传递主调函数把实参的值的副本传递给被调函数的形参。主调函数把实参的值的副本传递给被调函数的形参。在被调函数内改变形参的值不会改变主调函数中实参的值。在被调函数内改变形参的值不会改变主调函数中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分校 函数
限制150内