- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章函数的设计与应用 函数的设计与应用 本章将介绍有关函数的几个内容: C语言程序设计中的函数的概念 函数的定义和函数的调用 函数间的信息传递机制 内部函数和外部函数 编译预处理的作用和使用方法 函数的概念 函数是完成某些特定功能的程序块。C语言规定一个C程序应该由一个称之为main()的主函数和若干个其他函数组成,程序由主函数开始执行,通常在调用其他函数后再回到主函数,并在主函数中结束整个程序的运行。 【例1】有一个模块设计方案,它的函数调用关系如下 函数类型 C语言中,函数分为以下两种: 标准库函数 用户自定义函数 无参函数 有参函数 函数的定义 C语言中,函数的定义形式如下: 类型说明符 函数名(类型名 形参1,类型名 形参2,……) { 声明部分 执行的语句部分 } 函数的返回值 函数返回语句的形式如下: return 表达式 或者 return(表达式) 函数的调用 函数的原型说明 函数原型说明语句的一般形式如下: 函数类型 函数名(参数类型1,参数类型2,…… ); 或 函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,…… ); 函数的调用 函数的调用 函数调用的一般形式是: 函数名(实参表) 函数名是被调用的函数的名称。 函数的嵌套调用和递归调用 函数嵌套调用 函数的嵌套调用和递归调用 函数递归调用 函数递归调用 递归算法在可计算性理论中占有重要地位,它是算法设计的有力工具,对于拓展编程思路非常有用。就递归算法而言并不涉及高深数学知识,只不过初学者要建立起递归概念不十分容易。 先从一个最简单的例子导入。 函数递归调用 设计一个求n!的函数过程fact(n),函数代码如下: long fact(int n) { if(n==1) return(1); else return(n*fact(n-1)); } 函数间的参数传递 在程序的模块化设计中,一个函数调用另一个函数时一般要向被调函数传送若干参数,被调函数执行完毕后返回主调函数时,一般也会返回一个函数值,这就是函数间的参数传递。 地址结合方式(传址方式) 数值结合方式(传值方式) 函数间的参数传递 全局变量和局部变量 动态存储变量与静态存储变量 内部函数与外部函数 C语言中规定,函数不能嵌套定义,即不能在一个函数模块内部又包含另一个函数模块,所以,程序中所有的函数定义均是在其他函数之外的,也就是说函数实质上都是全局的。但是,可以根据需要,把函数分为外部函数和内部函数。 内部函数与外部函数 外部函数 同一个源文件内,如果被调函数放在了主调函数的后面,则要在主调函数中加入声明被调函数的语句。 如果一个C程序是由多个源文件构成,根据函数是全局的这一概念,则每个源文件内的函数都能被其他源文件的函数所调用,但是,需要在主调函数中对不在本源文件内部的被调函数进行外部声明,声明被调函数是一个外部函数。 声明格式如下: extern 函数类型说明符 函数名(参数表说明); 内部函数与外部函数 内部函数 为了把函数的作用范围定义在本源文件模块内,不许其他源文件的函数调用,即使其他源文件中有同名函数定义,也要与其区别,C语言规定建立内部函数,也称其为静态函数。 内部函数的定义格式是: static 函数类型说明符 函数名(类型名 形参1, 类型名 形参2,……) { 函数执行的语句体 } 如何运行一个由多个源文件组成的程序 如果一个C程序是由多个源文件组成的,那么对这些源文件的编译连接过程可以通过以下两种方式实现: 利用Turbo C的集成环境 通过运行tcc编译连接多个源文件 如果利用tcc编译命令编译连接三个源文件file1.c、file2.c、file3.c,则在命令操作环境下输入如下形式的命令: tcc file1 file2 file3 ↙ 系统自动生成一个名为file1.exe的可执行文件,运行file1.exe即可。 程序举例 【例17】 (2000年9月二级C语言水平考试试题选择题第35题)有如下程序: long fib(int n) { if(n2) return(fib(n-1)+fib(n-2)); else return(2); } main() { printf(%d \n,fib(3)); } (A) 2 (B) 4 (C) 6 (D) 8 程序举例 【例18】 使用递归调用函数的设计方法求出菲波那契(Fib
您可能关注的文档
最近下载
- 吉林省中药软片炮制规范.pptx VIP
- 名著阅读《湘行散记》七年级语文上册部编版(共9页).docx VIP
- 《白洋淀纪事》阅读测试题含答案(推荐).docx VIP
- 必考名著《白洋淀纪事》导读+知识点汇总.pdf VIP
- CQJZDE-2008 重庆市建筑工程计价定额.docx VIP
- 人教部编版七年级语文上册名著选读《湘行散记》导读.doc VIP
- 重庆市建筑工程计价定额CQJZDE-2008.doc
- 部编版七上语文名著导读《朝花夕拾》、《白洋淀纪事》、《湘行散记》知识点练习(含答案).docx VIP
- 超星尔雅学习通《大学生劳动教育》章节测试含答案.docx VIP
- 七年级上册名著《湘行散记》知识点+习题(共12页).docx VIP
文档评论(0)