- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
;;
第5章函数
;
5.1C函数与C程序结构
;模块化程序设计;模块化软件结构的示意图;函数是通过调用来执行的,允许函数间互相调用,也允许直接或间接的递归调用其自身;
;;调用另一个函数的函数称为主调函数、被调用的函数称为被调函数;
函数的四种形式:
a)从使用的角度来分为用户函数和系统函数
b)从形式上分成有参函数和无参函数
c)从作用的范围分为外部函数和内部函数
d)从返回值的角度分成有返回值函数和无返回值函数;5.2函数的定义及构成;函数具有以下特征
(1)存储类型
定义函数时[存储类型]可以是extern或static两种关键字说明
(2)数据类型
定义函数时[数据类型]是用来说明该函数返回值的类型,可以是整型、字符型、实型、指针型和其它构造类型。如果省略,则系统默认为int型。
(3)函数名
函数名是一个标识符,它的命名规则同变量相同。
(4)形式参数表
形式参数(简称形参)的说明形式如下:
数据类型形式参数1,数据类型形式参数2,……;(5)函数体
由{}括起来的部分称为函数体。由说明部分和语句部分组成
(6)函数的返回值
返回值可以是常数、变量或表达式,也可以是指针,但不能是数组名或函数名。
return表达式;
return(表达式);
例如:returns;
;关于return语句说明如下:
如果不需要从被调函数带回返回值可以不要return语句。一种情况是将函数类型定义为void型,也叫空类型.
例如:voidprintstar()
2、还可以用不带表达式的return作为函数的逻辑结尾,这时,return的作用是将控制权交给调用函数,而不是返回一个值。也可以不用return。
return;
;return语句是函数的逻辑结尾,不一定是函数的最后一条语句,一个函数中允许出现多个return语句,但每次只能有一个return语句被执行。
if(x0)return-1;
elseif(x==0)return0;
elsereturn1;;5.3函数的调用
5.3.1函数的调用;【例5.3】调用函数实现求长方形的面积。;
;例如,求两个数中的最大数;;【例5.5】写出程序运行结果。
#includestdio.h
intf(inta,intb)
{if(ab)return1;
elseif(a==b)return0;
elsereturn-1;
}
main()
{inti=2,p;
p=f(i,++i);/*传递的都是3*/
printf(“%d”,p);
}
;(4)函数定义的类型就是返回值的类型;
函数调用时,如果return中的表达式类型与函数类型不一致,则编译系统自动将表达式的类型转换成函数的类型后返回。
intmax(floatx,floaty){
floatz;
z=(xy)?x:y;
returnz;/*返回整型值*/
}
输入:3.5,4.8;(4)调用函数与被调用函数的相对位置关系
一个程序文件中可能包含若干个函数,函数在其中所处的位置代表函数定义的顺序,同时也决定了它的作用域。
若:调用点位于被调用函数后则不需说明,而调用点位于被调用函数前,则必须进行函数声明后才能调用。
声明时要说明被调用函数的返回值的类型、函数名、函数的形式参数表,其中形参都要在形参表中一一列举。函数声明的
格式为:类型名被调用函数的函数名();【例5.6】观察下面程序中声明函数与调用点的位置。#include#includestdio.h
longfac(intx);//声明函数fac,形参为int类型,此时函数作用域开始
voidmain()
{intn;
printf(inputaninteger:);
scanf(%d,n);
if(x0)
printf(dataerror\n);
else
printf(%d!=%ld,n,fac(n));
文档评论(0)