第10章 写程序就是写函数.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 写程序就是写函数——函数入门 相信读者大致都了解一点数学意义上“函数”的概念,比如“y=f (x)”,且不论f的具体形式如何,其基本特点是“对一个x,有一个y值与之对应”。C语言中,“函数”是个重要的概念,是模块化编程的基础。 本章主要涉及函数的概念、函数原型、函数的定义、函数的参数传递机制等相对基础的内容,为后面进一步阐述模块化编程打下基础。 10.1 什么是函数?—根据输入进行处理返回输出 代码编多了会发现一个问题:一些通用的操作,比如交换两个变量的值,对一组变量进行排序等,可能在多个程序中都会用到,不仅如此,在单独一个程序中也可能会对某个代码段执行多次。 问题:有必要在每次执行时都把该代码段书写一次么,这不仅会让程序变得很长,且会造成难以理解,可读性下降。 10.1.1 分割 为了解决以上问题,C语言将程序按功能分割成一系列的小模块,所谓“小模块”,可理解为完成一定功能的可执行代码块,称之为“函数”。 函数是C语言源程序的基本功能单位,打个比方,可以将函数视为一个黑盒子,或“加工设备”,从一头输入数据(原材料),从另一头就可以得到结果(产品)。至于函数内部是如何工作的,外部并不关心。 C语言源程序均是由函数组成的,在前面章节给出的示例代码,只有一个main函数,这仅适用于比较简单的问题,实际上的程序往往由多个程序组成。函数的调用是由另一个函数发起的,举例来说,在A函数中调用B函数,从B函数的角度上说,A函数可视为外部函数(有的书中也叫外部程序、主调函数,B函数相应地称为被调函数),外部函数A对函数B是如何定义的,功能是如何实现的毫不关心,A对B所知道的仅限于输入给B什么,以及B会输出什么。 10.1.2 库函数和自定义函数 为方便解决某些基本问题,C语言提供了库函数,库函数是将前人书写的、有通用功能的函数打包,方便开发者调用,或是一些复杂的功能,比如输入输出,这涉及到硬件方面的内容,如果要我们自己写如何输出输出的函数,肯定要头大半天。 C语言中的库函数十分丰富,大致可分为“标准库函数”和“第三方库函数”两类,标准库函数是得到广泛认可,形式统一,被多种类的编译器支持的库函数,而第三方库函数是一些软件厂商为某些特定功能领域开发,多具有专用性。随着C语言的不断发展和应用领域的拓展,标准化的工作也在不断深入,标准库函数也会不断扩充。 除了库函数外,C语言允许用于自定义函数以灵活解决各种问题,用户可以将自己的算法编成一个个相对独立的函数模块,用调用的方法来使用函数。某种程度上说,C语言的全部功能是由这样那样的函数来实现的,C语言也常称为“函数式语言”。 10.2 自定义函数 函数的调用可能是由另一个函数触发,但函数的定义都是平行的,包括main函数在内,所谓“平行”,有两层含义,一是“不允许把一个函数定义在另一个函数内”,这说明,函数定义都要在main函数外部,二是“不同函数定义放置位置没有关系”,可以定义在main函数前,也可以定义在main函数之后。 10.2.1 定义的语法 和变量一样,要想使用一个函数,定义是不可缺少的,函数定义有4个要素:参数列表,返回类型,函数名和函数体,参数列表和返回类型对应着输入输出,函数名用于和程序中其他程序实体区分,而函数体是一段可执行的代码块,实现特定的算法或功能。 函数的基本定义语法如下: 返回类型 函数名(参数列表) { 函数体; } (1)输入:参数列表 基本形式为: 类型 变量名1,类型 变量名2,类型 变量名3,…… (2)输出:返回类型 返回类型用于指明函数输出值的类型,如果没有输出值,返回类型为void。如果在函数定义时没有注明返回类型,默认为int。 (3)函数名 函数名用于标示该函数,和其他函数区分开来,因此,函数名必须是合乎编译器命名规则的标识符。 参数列表、返回类型和函数名总体称为函数头,与之对应的是函数体。 (4)函数体 函数体是一段用于实现特定功能的代码块,比如局部变量声明和其他执行语句等。注意,在函数体内声明的变量不能和参数列表中的变量同名。 10.2.2 函数定义范例 定义一个函数是为了调用,函数调用有两种类型,一是“先定义,后调用”,这要求函数定义和调用语句在同一个文件内,编译器能从函数定义中提取函数的参数列表、输出类型等接口信息。二是“函数声明+函数调用”,大多数情况下,函数的定义与函数的调用并不在一个文件内,即使在一个文件中也有可能调用在前而定义在后,这时需要在调用之前先对函数声明,告诉编译器有这么一个函数存在,函数原型声明将在下一节讨论,下面来看一个先定义、后调用的例子,希望读者从中体会函数的定义和调用方式,见示例。 10.2.3 不要重复定义 一个C程序可能由多个文件(一个.c、.h等称为一个文件)组成,函数的定义和函数的调用

文档评论(0)

ea238982 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档