C语言经典教程8讲(3-25)

C语言经典教程8讲(3-25)

ID:43187671

大小:444.00 KB

页数:68页

时间:2019-10-02

C语言经典教程8讲(3-25)_第1页
C语言经典教程8讲(3-25)_第2页
C语言经典教程8讲(3-25)_第3页
C语言经典教程8讲(3-25)_第4页
C语言经典教程8讲(3-25)_第5页
资源描述:

《C语言经典教程8讲(3-25)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1概述2函数定义的一般形式参数和返回值3函数的调用函数原型嵌套调用、递归调用第八章函数14数组作为函数的参数5局部变量和全局变量6变量的存储类别静态存储方式与动态存储方式7内部函数与外部函数2C程序结构1概述3C函数的分类(从用户使用的角度分类)库函数—由系统提供,printf(),sqrt().用户自定义函数—用户自己编写#includeintadd(intx,inty){return(x+y);}main(){inta,b,sum;sum=add(a,b);printf(“sum=%d”,sum);}add()是

2、自定义函数Printf()是库函数41、函数的概念从外部来看,函数就是一个数据加工厂。/*自定义函数*/intmax(intx,inty){intz;z=x>y?x:y;returnz;}c=max(a,b);传送数据返回结果2、采用自定义函数的意义符合结构化设计思想,每个自定义函数完成一个功能,可单独编译,便于设计、调试。一个函数可被多次调用,避免在程序中设计重复的代码。51.有参函数的定义[类型标识符]函数名(形式参数表)函数头{局部声明函数体执行语句}2.无参函数的定义[类型标识符]函数名(){局部声明执行语句}2函数定义的

3、一般形式6例如:/*定义无参函数*//*定义有参函数*/voidstar()intmax(intx,inty){{intz;printf(“******”);z=x>y?x:y;}return(z);}函数定义时,注意:函数名的括号后无“;”必须指明每个参数的类型,和函数值的类型.函数值类型:函数返回值的类型。如:intfloatcharvoid等,缺省按整型处理。无返回值的函数,函数值类型用void.73.函数的参数和函数返回值形式参数简称实参,主调函数中提供的数据。实际参数简称形参,被调函数中用以接收主调函数数据的变量。函数返

4、回值c=max(a,b);(main函数)实参a,b(max函数)形参x,y返回值zmax(intx,inty){intz;z=x>y?x:y;return(z);}8main(){inta,b,c;scanf(%d%d”,&a,&b);c=max(a,b);实参printf(“Maxis%d”,c);}intmax(intx,inty)形参{intz;z=x>y?x:y;return(z);}输入:-100200输出:Maxis200例:调用函数时的数据传递9关于参数的说明:1、形参和实参的对应:形参和实参的个数要一样多,位

5、置一一对应,类型要匹配如:d=max(7.8,10.2);/*实、形参类型不一致*/m=max(a,b,c);/*实、形参个数不一致*/2、实参可以是常量、变量、表达式,总之要有确定的值。如max(2,b+c)3、实参对形参的数据传递是“值传递”,即单向传递。当函数调用时,将实参的值传递给形参,而不能由形参传递给实参。若是数组名,则传送的是数组的首地址。10参数传递举例:利用自定义函数,找出三个数中的最大数。main(){inta,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d=max(a,b);/*a、b的值作

6、为实参*/d=max(d,c);/*d、c的值作为实参*/printf("Maxis%d",d);}max(intx,inty){intz;z=x>y?x:y;return(z);/*z值作为返回值*/}118585812812假设输入a,b,c的值:8,5,121)函数调用前,形参不占内存单元;函数调用后,形参占用的存储单元将被释放;例中第一次调用:实参:abd=max(a,b);intmax(intx,inty)形参:xy第二次调用:实参:dcd=max(d,c);形参:xy122)实参和形参占据不同的存储单元,因此在被调函数

7、中给形参变量赋值,不会对实参造成任何影响。13例:形、实参占据的是不同的存储单元main(){inta=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);}14mai

8、n(){inta,b,t;scanf(“%d%d”,&a,&b);t=a;a=b;b=t;printf(“%d,%d”,a,b);}输入:35输出:5,3例:交换两个数,a和b35abt353main(){voidswa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。