(补充)函数.ppt

(补充)函数.ppt

ID:49260604

大小:328.50 KB

页数:18页

时间:2020-02-01

(补充)函数.ppt_第1页
(补充)函数.ppt_第2页
(补充)函数.ppt_第3页
(补充)函数.ppt_第4页
(补充)函数.ppt_第5页
资源描述:

《(补充)函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、17.1函数的概述函数是C语言程序的基本组成单元。在C语言中,函数不一定要有参数,也不一定要计算数值。每个函数本质上是一个自带声明和语句的小程序。可以利用函数把程序划分成小块,这样便于人们理解和维护程序。函数可以复用,即一个函数最初可能是某个程序的一部分,但可以将其用于其他程序中。27.1函数的概述函数是C语言程序的基本组成单元。/*计算平均值*/#include"stdio.h"voidmain(void){floatx,y,z;floataverage(floata,floatb);/*函数声明*/printf("输入3个数值:");s

2、canf("%f%f%f",&x,&y,&z);printf("%.2f和%.2f的平均值为:%.2f",x,y,average(x,y));/*函数调用*/printf("%.2f和%.2f的平均值为:%.2f",y,z,average(y,z));/*函数调用*/printf("%.2f和%.2f的平均值为:%.2f",x,z,average(x,z));/*函数调用*/}函数声明函数调用main(),一个C语言程序必须包含一个main函数且只能包含一个main函数floataverage(floata,floatb)/*函

3、数定义*/{floatc;c=(a+b)/2;returnc;}函数定义函数类型函数名参数列表函数头部函数体37.1函数的概述为什么要有函数声明呢?假设上面程序没有函数声明这条语句,当遇到main函数中第一个average函数调用时,编译器没有任何关于average函数的信息,编译器不知道average函数有多少形式参数,形式参数的类型是什么,也不知道average函数的返回值是什么类型。所以程序无法正常编译。解决方法:一种方法是安排程序,使得每个函数的定义都在此函数的调用之前;另一种方法是函数声明,其形式为:函数类型函数名(形式参数);4

4、7.1函数的概述函数声明必须与函数定义一致。需要说明的是,函数声明不需要说明形式参数的名字,只要显示它们的类型就可以了。如:floataverage(float,float);此时程序不需要进入函数定义,所以编译器只需要知道其形式参数类型即可。57.2数值交换【例7-5】编写函数交换两个变量的数值#include"stdio.h"voidswap(intx,inty);voidmain(void){inta,b;printf("请输入交换的数值:");scanf("%d%d",&a,&b);/*读入数值*/printf("交换前a=%d,b

5、=%d",a,b);swap(a,b);/*调用函数*/printf("交换后a=%d,b=%d",a,b);}voidswap(intx,inty)/*交换函数定义*/{inttemp;temp=x;x=y;y=temp;}请输入交换的数值:58交换前a=5,b=8交换后a=5,b=8Pressanykeytocontinue67.2数值交换为什么没有实现数值的交换?要弄清楚这个问题,需要了解C语言中实际参数和形式参数是如何传递的。形式参数出现在函数定义中,只有在函数被调用时才在内存中为其分配变量空间,并且在函数调用结束后,释放变

6、量空间。也就是说,形式参数中的变量并不是一直存在的,它随着函数调用开始而生产,函数调用结束而消失。实际参数是出现在函数调用中的表达式,其作用是在函数调用时,计算出表达式的值传递给形式参数,完成函数功能。77.2数值交换程序执行过程对应的内存变化:85ab5885abxytemp85585abxytemp85ab(a)调用前(b)调用时(d)返回后(c)返回前87.2数值交换从程序的执行过程中可以看出,C语言进行函数调用时参数是值传递,也就是从实际参数到形式参数的单向传递,形式参数的任何改变不会影响实际参数的内容。这也就是解释了程序为什么得不

7、到我们想要的结果。97.3数组作为参数的函数调用数组作为一种常用的构造数据类型,也可以作为函数的参数。当形式参数是一维数组时,可以说明数组长度或不说明数组的长度。例如:intfun(inta[6]){}或intfun(inta[]){}107.3数组作为参数的函数调用因为在C语言中,形式参数中数组并不像普通数组定义那样在内存中已分配一块连续的空间,它只是与实际参数数组公用一块内存空间,所以形式参数中数组长度没有意义如在main函数有如下语句:intb[6],c;c=fun(b);b[5]bb[4]b[3]b[2]b[1]b[0]b[5]bb

8、[4]b[3]b[2]b[1]b[0]a(a)调用前(b)调用时117.3数组作为参数的函数调用从图中可以看出,函数调用后,形式参数数组a并没有像实际参数数组b一样再次申请一块连

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

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

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