1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章函数

第5章 函 数 C程序的重要组成是函数。当你面临一个大的问题时,为了有效地解决问题,方法是将问题分解。在设计一个大的程序时,关键的一点是把它划分成若干个小而容易处理的程序模块,每一个程序模块用来实现一个特定的功能,这样的程序模块在高级语言中一般称为子程序,在C语言中则称为函数。 本章主要讲授函数的定义和函数的调用方式与方法,以及变量的作用域和存储类型等。 C语言的函数定义都是互相平行的、独立的,但可以嵌套调用和递归调用,调用时实参与形参之间是值传递。一个C程序是由若干个(至少一个)函数组成,每一个函数用来实现一个特定的功能,通过互相调用完成系统的总功能。C语言的函数提供了实现“自上而下”的结构化编程方法,图5-1是一个程序中函数调用的示意图。每一个C程序有且只有一个main函数,它的运行是从main函数开始,一个结构良好的程序最后从main函数结束。一个C程序的所有函数可以组织在若干个源文件中,源文件是编译的基本单位。 C语言的变量,从作用域(即变量在什么范围内有效)来讲,可以分为局部变量和全局变量;从生存期(即变量值在内存中存在的时间)来讲,可以分为动态存储变量和静态存储变量。 5.1 函数的定义 从用户使用的角度看,函数有两种: (1) 标准函数,即库函数。这是由系统提供的,像printf()和sqrt()等都是库函数,对于这些库函数用户不必自己定义,可以直接使用它们。 (2) 用户定义函数,是用户根据所需解决的问题而专门编写的函数。 先给出一个简单的函数调用的例子。 例5.1 用户定义函数的定义与调用。 #include ?stdio.h? int sum() { /* 用户定义函数sum */ int n, hj?0; for (n?1; n??100; n??) hj?hj?n; return (hj); /* 返回函数值 */ } void output(int zh) { /* 用户定义函数output,形参变量zh接受实参s传过来的值 */ printf((************\n(); /* 调用库函数printf */ printf(( sum?%d\n(, zh); printf((************\n(); } void main() { int s; s?sum(); /* 调用用户定义函数sum */ output(s); /* 调用用户定义函数output */ } 运行结果如下: ************ sum?5050 ************ 这里,sum、output都是用户自定义的函数名,分别用来求1至100之间的自然数之和,输出所求的结果。包含函数调用语句“s?sum();”和“output(s);”的函数称为主调函数,函数sum及output均称为被调用函数。 由上例可知,一个函数由函数头和函数体两部分构成。函数头又包括函数类型、函数名、形式参数及其类型声明等组成;函数体由声明部分和执行语句部分构成。在函数体的声明部分中,对函数中所用的变量进行定义,另外还需对函数中将要调用的函数作声明(见5.3.2节)。 函数定义的一般形式如下: (1) 无参函数的定义形式: 类型标识符 函数名() { ——函数头(即函数的说明部分) 声明部分 执行语句 } 例5.1中的sum函数是无参函数。函数名前的“类型标识符”是用来声明函数的类型,即函数返回值的类型。return语句的作用是将它后面的表达式hj的值返回到主调函数中。 (2) 有参函数定义的一般形式: 类型标识符 函数名(形式参数列表) { ——函数头(即函数的说明部分) 声明部分 执行语句 } 例5.1中的output函数是有参函数。变量zh为形式参数,“int zh”定义形参变量zh的类型。主调函数中的函数调用语句“output(s);”中的变量s为实际参数。由于该函数不需要返回值,所以函数类型为void。 “形式参数列表”列出所有形式参数及其类型声明,如果有一个以上形式参数,则它们之间用逗号分隔。在函数调用时,主调函数中的“实际参数列表”中的每一个实际参数值依次传递给被调用函数中的“形式参数列表”中的每一个形参变量。 (3) 空函数,它的形式为: 类型标识符 函数名() { } 例如: void count() { } 调用此函数时,什么工作也不做,没有起任何实际作用。但在主调函数中写上“count();”语句表明“在这里要调用一个函数”,而现在这个函数的具体内容尚未写出来,因此调用此函数时没有起任何实际作用,待以后扩充函数

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档