资源描述:
《C语言教程第7章函数ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章函数本章重点、难点:1、掌握函数的定义和调用2、了解变量的作用范围7.1概述C语言是函数式的语言,至少包含一个主函数main()函数,也可包含若干函数:库函数或用户自定的函数。一个大的程序可能要完成多项功能。如果把这些功能都揉和在一个main()函数中来实现,程序代码会很长。这样,不仅使程序的结构趋于复杂,阅读、理解困难,而且调试、维护都会感到极大的不方便。因此,应将较大的程序按照功能进行细分,每一个功能由一个函数来实现。然后再把这些函数有机地结合起来,形成一个功能完整的程序。C语言函数主函数库函数用户自定义函数#include<头文件>调用形式:函数名([参数列表])例如1
2、、(lt1.c)voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("%d",c);}intmax(intx,inty){intz;z=x>y?x:y;returnz;}//调用max()函数,并将函数的结果赋值给变量c//max()函数功能的定义,其中x,y为参数//返回函数调用处,并带回z的值说明:1)一个源程序由一个或多个函数组成。以源文件为单位进行编译,而不以函数为单位。intmax(intx,inty){intz;z=x>y?x:y;returnz;}voidmain(){inta,b,c;scanf("%
3、d,%d",&a,&b);c=max(a,b);printf("%d",c);}说明:2)程序的执行总是从main()函数开始,而不论main()函数的书写位置如何。调用其它函数后又返回到main()函数中,并在main()中结束整个程序的运行。//有参函数。被调函数主调函数例如2、(lt2.c)voidputstar(){printf("*****************");}voidputmessage(){printf("verygood");}voidmain(){putstar();putmessage();putstar();}putstar();说明:3)所
4、有函数相互独立,可以相互调用,但不能调用main()函数。//无参函数。说明:4)分类:按用户:标准库函数用户自定义函数按形式:有参函数:主调函数与被调函数之间有数据传递。(例如lt1.c)无参函数:主调函数与被调函数之间没有数据传递。(例如lt2.c)7.2函数的定义形式一、一般形式:函数名()[类型名形参1,类型名形参2……][类型标识符]{}声明部分执行部分说明:1)每个形参都要有类型名,各形参间用逗号隔开。2)同一程序中函数名必须唯一。3)形参名在同一函数中唯一,各个函数间可以重名。4)函数不能嵌套定义,即不能再在数内部再定义函数。5)省略类型标识符,默认为int类型。6)
5、如果一个函数没有返回值,使用void标识符。函数名()类型标识符{}声明部分执行部分[类型名形参1,类型名形参2……]函数定义的一般形式:函数名()类型标识符{}声明部分执行部分[类型名形参1,类型名形参2……]无参函数:有参函数:声明部分执行部分函数名()类型标识符{}[类型名形参1,类型名形参2……]空函数(为了以后功能的扩展)练习:编写一个函数add,完成两个int型数据的相加,并将结果返回。函数名()类型标识符{}声明部分执行部分[类型名形参1,类型名形参2……]intaddintx,intyintz;z=x+y;……//返回z的值7.3函数参数和函数的值一、形参与实参实参
6、:主调函数中调用一个函数时函数名后括号内中的参数。intmax(intx,inty){intz;z=x>y?x:y;returnz;}voidmain(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("%d",c);}//其中a和b为实参形参:定义函数时函数名后括号内中的参数。//其中x和y为形参#include//lt7_2.cmax(intx,inty){intz;z=x>y?x:y;returnz;}main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf
7、("%d",c);}说明:1)实参必须有确定的值,即必须将确定的值带给形参。2)形参以及被调函数中的变量只有在函数被调用时,才临时开辟内存单元。函数退出时,这些单元都被释放。因此,这种变量值在函数体内部起作用,与其他函数中的变量互不相关,它们可以和其它函数中的变量重名。3)形参的类型必须指定。warning:localvariable'a'usedwithouthavingbeeninitialized例题:lt3.cintcmp(intx,inty){if(x>y)