预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共101页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C语言程序设计第8章函数8.1概述一个C程序,由一个主函数和若干其它函数组成,它们之间关系是:主函数能够调用其它函数,其它函数可相互调用。函数:完成特定功效程序段,通常由用户定义或系统定义各函数可存放在一个文件中,也能够存放在不一样文件中。某程序整体结构,举例:用常规、工程和文件包含三种方法打印字符串一、常规方法:各函数包含在一个文件中例T8-1.cmain(){p1();p2();p1();}p1(){printf(“***********************\n”);}p2(){printf(“_____How_do_you_do!\n”);}二、工程方法例:某程序由四个文件组成,其中,一个文件包含主函数,两个文件包含两个被调用函数。一个为工程文件,包含这个程序三个文件名。操作:Alt+pProjectname:T8-1-4.prjAlt+R结果同上三、文件包含方法在主函数中使用文件包含预编译命令,将不在本文件而在其它文件中函数进行预编译处理把各文件中函数包含到本文件中来,然后一起进行编译、连接、运行。T8-1-5.c#include“T8-1-2.c”#include“T8-1-3.c”main(){p1();p2();p1();}运行结果同上说明:(1)编译单位是文件而不是函数;(2)一个完整程序可由若干个文件组成,可用工程或文件包含方法对其编译;(3)C执行总是从main函数开始执行,调用其它函数后又返回到main函数;(4)函数定义是独立、平等,不能嵌套定义但可相互调用;5)函数类型:①标准库函数,由系统提供,用户直接使用②用户定义函数(6)函数形式:①无参函数主调函数无数据传送给被调函数,可带或不带返回值.②有参函数主调函数与被调函数间有参数传递,主调函数可将实参传送给被调函数形参,被调函数数据可返回主调函数。8.2函数定义普通形式1.无参函数定义形式:类型标识符函数名(){申明部分语句}注:无参函数普通不返回函数值,故类型标识符可省。2.有参函数定义形式:类型标识符函数名(形式参数表列){申明部分语句}其中:类型标识符:指出函数返回值数据类型(int,float,char等)函数名:正当标识符;形参表列:接收主调函数传递过来实参,其中包含对形参类型申明(老版本中形参类型深入申明放在下一行)。形参类型:与实参类型要一致。{}:函数体,包含申明部分:定义局部变量数据类型;语句部分:完成函数功效若干执行语句例:intmax(intx,inty){intz;z=x>y?x:y;return(z);}3.空函数定义形式类型说明符函数名(){}例:dummi(){}空函数不作任何操作,不过正当,它对调试程序或以后在此处补充完整函数体是有作用。4.对形参申明传统方式传统方式中,形参类型说明在函数定义第2行如:传统形参申明形式intmax(x,y)intx,y;{intz;z=x>y?x:y;return(z);}8.3函数参数和函数值8.3.1形式参数和实际参数实际参数:主调函数中提供数据。能够是常量、变量、表示式等,是详细数值。形式参数:被调函数中用以接收主调函数数据变量。被调用函数名后面括号内若干变量名。例T8-2.c调用函数时数据传递main(){inta,b,c;scanf(%d%d”,&a,&b);c=max(a,b);printf(“Maxis%d\n”,c);}max(intx,inty){intz;z=x>y?x:y;return(z);}关于形、实参说明:1.形参只有在函数调用时才分配存放单元,调用结束后,释放所分配单元;2.实参能够是常量、变量、表示式,总之要有确定值,当函数调用时,将实参值传递给形参,若是数组名,则传送是数组首地址。3.被调函数中,形参类型必须指定,方便分配存放单元。4.实参、形参数据类型一致,赋值要兼容,次序要一致。5.若被调函数类型为非整形,要在主调函数中对被调函数作原形申明或在主调函数之前定义。6.实参对形参数据传送是值传送,也是单向传送,当被调函数形参发生改变时,并不改变主调函数实参值。例T8-2-1.c形、实参占据是不一样存放单元main(){inta=2,b=3;printf(“a=%d,b=%d\n”,a,b);printf(“&a=%x,&b=%x\n”,&a,&b);add(a,b);printf(“a=%d,b=%d\n”,a,b);printf(“&a=%x,&b=%x\n”,&a,&b);}add(intx,inty){x=x+8;y=y+12;printf(“x=%d,y=%d\n”,x,y);printf(“&x=%x,&y=%x\n”,&x,&y);}8.3.2函数返回值调用一个函数普通都希望返回一个确定值。相关函数值几点说明:1.若需要返回值则用ret