四川大学计算机基础及C程序设计语言课件第6章 函数.pptVIP

四川大学计算机基础及C程序设计语言课件第6章 函数.ppt

  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文档。上传文档
查看更多
6.6.2 指向函数的指针(函数指针) 在C语言中,数组名代表数组的首地址。同数组类似,每个函数也会在内存中占据连续的一段内存空间,而函数名则代表了该内存空间的首地址,即函数调用时的入口地址。 函数指针变量定义的一般形式为: 类型标识符 (*指针变量名)(); C语言中也可以定义一种指针变量使其指向某个函数,这种指向函数的指针变量被称为“函数指针变量”。 例:double (*pf)(double); 这表示pf是一个函数指针,它所指向的函数形参是一个double类型的变量,其返回值是double类型。 6.6.2 指向函数的指针(函数指针) 在某些需动态决定调用不同函数的场合,使用函数指针可以使程序的执行效率更高,程序也更简捷。 例如,在任务6.1中,在菜单的执行函数中,当用户选择了选项编号后,我们使用switch语句来决定具体执行什么样的模块函数。当选项较多时,switch语句的执行效率较差。可以考虑使用函数指针来提高选择的效率。 例6.7 使用函数指针显示菜单 程序:6_7.cpp 6.6.2 指向函数的指针(函数指针) 例:调用该函数显示并执行课程信息管理菜单 运行结果如右图所示。在本例中,定义了一个函数指针数组menuExecFuns,数组中的每一个指针指向一个与课程管理相关的函数。在showMenu函数中,根据不同的输入,使用同一个语句(menuExecFun[nChoice])()就可调用不同函数执行。 6.7 递归函数 递归函数 6.7 递归函数 C语言规定,在调用一个函数时可以直接或间接调用该函数自身,这种调用方式称为函数的递归调用。 注意:在两种调用方式中,如果不加以控制,两者都会无休止地反复调用其自身,从而陷入无限循环模式。因此,在程序中,必须要使用条件判断语句,在满足某种条件时停止递归调用,使函数能逐层返回,最终结束该函数。 6.7 递归函数 一个递归函数的简单例子:n!。 程序:6_8.cpp 在本例中,fact函数是一个递归函数。使用公式n!=n×(n-1)!当n大于0的时候,fact函数将反复调用其自身,直到n=0的时候停止递归调用,然后函数逐层返回,直到初次调用结束后函数终止。 6.7 递归函数 可以采用递归算法来解决的问题都具有如下特点:原始问题可以转化为比原始规模较小一点的新问题,新问题可以采用与原始问题相同的解决办法,而此新问题又可进一步转化为更小一些的问题......依此类推,直到转化后的最小问题可以直接得出结果为止。比如上例,n!可以通过求(n–1)!得到;而(n–1)!又可以通过求(n–2)!得到......直到n等于0时可直接得到其结果1;然后又逐层向上返回,由0!的值1求出1!,由1!的值1求出2!......依此类推,直到求得n!的值为止。 整个递归调用的过程可以分为2个阶段: ① 递归阶段:此阶段不断将原始问题转化为规模更小一些的新问题,直到新问题足够简单达到递归结束条件。 ② 返回阶段:从最简单的已知问题出发,沿着和递归相反的方向逐层返回,直到回到初次调用处完成递归调用。 函数定义与分类 函数参数和返回值 函数与数组 函数与指针 递归函数 命令行参数 第六章 函数 6.1 概述 main函数又叫主函数,任何一个可执行的C程序必须有一个也只能有一个main函数,它是程序执行的起点。 利用函数,可以很方便地实现程序的模块化设计。 使用函数可以把一些常用功能的代码段组织为一个紧凑的可重复使用的单元,这样就可以大大减少重复输入程序代码的工作量,同时更增加了程序的可读性。 6.2 函数定义与分类 函数定义 函数分类 * 6.2.1 函数定义 void loginExec(char moudle) { switch(moudle) …… } 类型标志符:表明函数返回值的类型。如果省略,系统则认为是int型的。 函数名:命名规则同变量名。用于调用该函数。 形参列表:定义要传值的局部变量,保存调用该函数时的输入信息。形参多于一个时,用逗号分隔。没有形参时,括号不能省略。形参列表的方式如下: 类型标志符 参数名1,类型标志符 参数名2, …… 函数体:该函数功能具体的实现过程。通常包括若干变量的定义和若干语句。函数体由一对大括号和其中包括的语句组构成。大括号内可为空 由类型标识符、函数名和形参列表组成的部分称为函数的首部。 * 无参函数 无需根据任何其它外部输入信息,完成预先设计的固定功能的函数。 6.2.2 函数分类 从函数的参数个数来看,函数分为以下两类: 有参函数 必须根

文档评论(0)

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

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

1亿VIP精品文档

相关文档