- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C语言》2
第六章 函 数 张乐乐 6.1 模块化程序设计思想 解决复杂问题的方法应该采用“模块化的设计”思想,把一个庞大的应用程序分解成若干个程序模块,每一个程序模块实现一个特定的功能。在C语言系统中,“模块化的设计”使用的是函数。 函数分类 1.从用户角度分 从用户角度,函数可分为以下两类。 (1)库函数 (2)自定义函数 ① 函数定义; ② 函数调用; ③ 函数声明。 具体使用方法将在本章中详细介绍。 函数分类 2.从函数的返回值分 从函数是否有返回值,函数可分为以下两类。 (1)有返回值函数,调用该函数后可以得到返回值。 (2)无返回值值函数,调用该函数后没有返回值。无值函数类似于其他高级语言中的过程。 函数分类 3.从函数形式分 从函数形式角度,函数可分为以下两类。 (1)无参函数,函数不带参数。 (2)有参函数,函数带有至少一个参数。 6.2 函数的定义 函数由两部分构成:函数首部和函数体。 函数首部给出函数相关信息(类似“黑盒子”中的入口和出口),而函数体具体实现函数的功能。 (一) 格式: 函数首部 函数类型 函数名(形式参数) 函数体 声明部分 语句部分 (二) 函数的调用 函数名(实参表) 6.3 函数的调用 一. C语言中函数调用的一般形式为: 函数名(实参表列) 实参可以是常量、变量或其他构造类型数据及表达式。当函数被调用时,函数对应的程序代码才开始执行,才能实现相应的函数功能。 注意: 1.不管有无参数,调用时函数后面的括号不能省略. 2.实参表列中参数的个数、类型和排列次序都必须与函数定义的形参表列中的参数个数、类型和排列完全一致. 6.4 函数的参数和函数的值 函数的参数和返回值是用来在主调函数和被调函数之间传递数据的. 函数的参数: 用来主调函数向被调函数传递数据(或被调函数用来向主调回传数据) 函数的返回值:被调函数向主调函数传递的操作结果. 6.4 函数的参数和函数的值一.函数的参数 例6.2:函数单项传值示例 6.4 函数的参数和函数的值二.函数的值 对函数的值(或称函数返回值)有以下一些说明: 1.函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式; 或者为: return (表达式); 该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 2.函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。 3.如函数值为整型,在函数定义时可以省去类型说明。 6.4 函数的参数和函数的值二.函数的值 4.不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。 一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。 为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。 6.4 函数的嵌套调用 C中函数的定义是平行的,函数不可以嵌套定义,但可以嵌套调用。即C语言允许在一个函数的定义中出现对另一个函数的调用。 嵌套调用指的是在一个函数的调用过程中又调用其他函数,称为函数的嵌套调用。 除了main以外,都可以互相调用。 6.4 函数的嵌套调用 6.4 函数的嵌套调用 注意:函数调用可以如上所述一层层地嵌套下去,但注意不要构成死循环,如下图所示即是一个死循环,函数X调用函数Y,Y又反过来调用X,之后X又调用Y,……,没完没了. 6.5 函数的递归调用 (1)函数的递归调用是指,一个函数在它的函数体内,直接或间接地调用它自身。 C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数,执行递归函数将反复调用其自身。每调用一次就进入新的一层。 (2)递归调用终止 为了防止递归调用无终止地进行,必须在函数内有终止递归调
文档评论(0)