第六节函数和预处理命令.ppt

第六节函数和预处理命令.ppt

ID:62045122

大小:320.50 KB

页数:50页

时间:2021-04-13

第六节函数和预处理命令.ppt_第1页
第六节函数和预处理命令.ppt_第2页
第六节函数和预处理命令.ppt_第3页
第六节函数和预处理命令.ppt_第4页
第六节函数和预处理命令.ppt_第5页
资源描述:

《第六节函数和预处理命令.ppt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第六章函数与预处理命令熟练掌握自定义函数的结构掌握函数调用中值传递的几种方式掌握函数调用时,return语句的作用能设计简单的嵌套函数了解函数的递归调用了解预处理命令的种类及功能掌握宏定义的使用6.1函数的概念6.1.1函数定义函数定义就是对一个函数所要完成的任务进行描述,编写一个程序段来完成指定的任务。自定义函数的形式如下:基本格式:[函数类型]函数名([形式参数表列]){函数体;}解释:系统通过[形式参数表列]将数据传递到该函数体内,程序执行完毕后,将结果(若需要的话)返回,返回值的类型为[函数类型]指定的类型。注:若无返回值,则将[函数类型]定义为void型。6.

2、1.1函数的概念例如:voidHelloC()/*定义一个无参函数*/{printf("Hello,Cworld");}这里HelloC()为函数名,且为一无返回值函数。HelloC()函数是一个无参函数,当被调用时,输出Hello,Cworld字符串。6.1.2函数声明函数声明语句的格式就是把函数定义的首部加上分号即可,其一般形式为:类型说明符被调函数名(形式参数列);或类型说明符被调函数名(类型,类型…);例如:在main()函数中应对函数sum()说明为:intsum(intx,inty);或写为:intsum(int,int);需要注意的是在有的C语言版本中

3、,规定以下几种情况可以省去主调函数中对被调函数的函数声明:例6-1:阅读下列程序,分析程序的运行结果。/*程序6-1.c,函数的定义和声明*/#includesum(intx,inty)/*sum函数的定义*/{intz;z=x*x+y*y;return(z);/*用z返回结果。此语句也可以写成:returnz;*/}voidmain(){inta;a=sum(5,2);/*sum函数的调用,用a接收返回值*/printf(“a=%d”,a);}程序运行情况如下:a=296.1.3函数调用根据函数在程序中出现的位置,函数调用方式包括以下三种:(1)

4、函数语句:被调用函数在主调函数中以一条独立的语句形式出现。如:printf("%d",a);sum(15,5);都是以函数语句的方式调用函数。这种方式不要求函数有明确的返回值。(2)函数表达式:函数作为表达式中的一部分出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:a=sum(a,b);是一个赋值表达式。(3)作为其它函数实参:函数作为另一个函数调用的实参出现。这种情况是把该函数的返回值作为实参,因此要求该函数必须有返回值。例6-2:编一函数,判断某年是否为闰年,若是返回1,否则返回0。/*程序6-2.c,判断某年是否为闰年*/#inc

5、ludefun(intm)/*定义函数fun()*/{return(m%4==0)&&(m%100!=0)

6、

7、(m%400==0);/*判断是否为闰年并将结果返*/}voidmain(){intn;for(n=1987;n<2009;n++)/*输出闰年的年份*/if(fun(n))/*n作为fun()函数的实参调用该函数*/printf("year:%disaleap!",n);}程序运行情况如下:year:1988isaleap!year:1992isaleap!year:1996isaleap!year:2000isaleap!year:20

8、04isaleap!year:2008isaleap!6.1.4函数参数的值传递方式所谓“值传递”方式是指将实参的具体数值(单向)传递给形参的一种方式。采用这种方式时,实参可以是常量、已赋值的变量或表达式(表达式要有确定的值)。形参通常是变量,并且要求实参与形参的个数、类型相一致。在程序运行过程中,系统分配给实参和形参的内存单元是不同的(即实参、形参各自有属于自己的存储空间),分配内存单元的时刻也不同(即被调函数只在其被调用时,形参才被分配内存单元。在调用结束后,形参所占的内存单元即被释放)。例6-5:交换两个变量的值:/*程序6-5.c,交换两个变量的值*/#incl

9、udevoidswap(int,int);/*函数声明*/voidmain(){inti=3,j=5;swap(i,j);/*函数调用*/printf(“i=%d,j=%d”,i,j);}voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;printf(“x=%d,y=%d”,x,y);}程序运行情况如下:x=5,y=3a=3,b=5用函数swap来交换两个变量的值,运行结果显示,这里只交换了两个形参x,y的值,而没有交换main中的实参i与j的值,如图6-2所示。yx35

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

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

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