资源描述:
《c语言程序设计---函数ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第八章函数2004一、函数概述一个C程序,由一个主函数和若干其它函数组成,它们之间的关系是:主函数(main函数)可以调用其它函数,其它函数可相互调用。函数:完成特定功能的程序段,通常由用户定义或系统定义各函数可存放在一个文件中,也可以存放在不同的文件中。函数之间的调用,有三种方法:常规、工程和文件包含三种后两种方法自学常规方法:各函数包含在一个文件中例:p1(){printf(“***********************”);}p2(){printf(“_____How_do_you_do!”);}main(){p1();p2();p1();}说明:(1)编译
2、的单位是文件而不是函数;(2)一个完整的程序可由若干个文件组成,可用工程或文件包含的方法对其编译;(3)C执行总是从main函数开始执行,调用其它函数后又返回到main函数;(4)函数定义是独立的、平等的,不能嵌套定义但可相互调用;(5)函数的类型:①标准库函数,由系统提供,用户直接使用②用户定义的函数(6)函数的形式:①无参函数主调函数无数据传送给被调函数,可带或不带返回值.②有参函数主调函数与被调函数间有参数传递,主调函数可将实参传送给被调函数的形参,被调函数的数据可返回主调函数。二、函数定义的一般形式1、无参函数的定义形式:类型标识符函数名(){声明部分语句return返回值}2、
3、有参函数的定义形式:类型标识符函数名(形式参数表列){声明部分语句return返回值}例:intmax(intx,inty){intz;z=x>y?x:y;return(z);}例:dummi(){}3、空函数的定义形式类型说明符函数名(){}空函数不作任何操作,但是合法,它对调试程序或以后在此处补充完整的函数体是有作用的。4、对形参声明的传统方式传统方式中,形参类型说明在函数定义的第2行以下两种定义形式在TurboC中都认可,推荐使用二种方式,一方面兼容C++模式,另一方面直观。传统形参声明形式:intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}
4、新版本形参声明形式:intmax(intx,inty){intz;z=x>y?x:y;return(z);}三、函数参数和函数的值1、形式参数和实际参数实际参数:简称实参,主调函数中提供的数据。可以是常量、变量、表达式等,是具体的数值。形式参数:简称形参,被调函数中用以接收主调函数数据的变量。被调用函数名后面括号内的若干变量名。例调用函数时的数据传递main(){inta,b,c;scanf(%d%d”,&a,&b);c=max(a,b);实参printf(“Maxis%d”,c);}max(intx,inty)形参{intz;z=x>y?x:y;return(z);}输入:-1
5、00200输出:Maxis200关于形、实参的说明:1.形参只有在函数调用时才分配存储单元,调用结束后,释放所分配的单元;2.实参可以是常量、变量、表达式,总之要有确定的值,当函数调用时,将实参的值传递给形参,若是数组名,则传送的是数组的首地址。3.被调函数中,形参类型必须指定,以便分配存储单元。4.实参、形参的数据类型一致,赋值要兼容,顺序要一致。5.若被调函数类型为非整形,要在主调函数中对被调函数作原形声明或在主调函数之前定义。6.实参对形参的数据传送是值传送,也是单向传送,当被调函数的形参发生变化时,并不改变主调函数实参的值。例形、实参占据的是不同的存储单元main(){inta=
6、2,b=3;printf(“a=%d,b=%d”,a,b);printf(“&a=%x,&b=%x”,&a,&b);add(a,b);printf(“a=%d,b=%d”,a,b);printf(“&a=%x,&b=%x”,&a,&b);}add(intx,inty){x=x+8;y=y+12;printf(“x=%d,y=%d”,x,y);printf(“&x=%x,&y=%x”,&x,&y);}2、函数的返回值调用一个函数一般都希望返回一个确定的值。有关函数值的几点说明:1).若需要返回值则用return语句;2).被调函数中可用多个return语句,执行哪一
7、个由程序执行情况来定。例:函数中有如下语句if(a>b)return(a);elsereturn(b);3).return后面的括号可省,如:returna;4).return后的值可以是一个表达式,如:return(x>y?x:y);5).函数(返回)值的类型是在定义函数时指定的如:intmax(x,y){…}floatmin(a,b){…}doubleabc(d1,d2){…}注意:(1)函数定义时,函数名的括号后无“;”;(2