面向对象的程序设计语言----C++第04章.pptVIP

面向对象的程序设计语言----C++第04章.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文档。上传文档
查看更多
4.6.4 静态全局变量 当在所有函数体的外部用如下格式定义变量时,这种变量称为静态全局变量。 static 类型标识符 变量名; 静态全局变量的特点是: (1)与全局变量基本相同,只是其作用范围是定义它的程序文件而不是整个程序。 (2)静态全局变量在程序一开始运行时就被分配固定的存储单元,其生存期指的是整个程序运行期间。 (3)使用静态全局变量的好处是同一程序的两个不同的程序文件中可以使用相同名称的变量名,而它们之间互不干扰。 * 4.2 函数的调用 4.2.1 函数的调用形式 1.函数调用形式 函数名(实参列表) 如果程序中调用的是无参函数,则实参列表可略去,但函数的括号不能省; 如果实参表中有多个参数,则它们之间用逗号隔开; 实参的类型、个数应与形参顺序一一对应。 * 函数通过下列3种方式完成函数调用: (1)函数调用语句:如printf(); (2)函数表达式:如c=2*max(a,b); (3)函数参数:如m=max(a,max(b,c)); * 2.函数调用的执行过程 一个C++程序经过编译以后生成可执行的程序代码,形成的程序文件名的后缀是.exe,存放在外存储器中,如硬盘等。 程序运行被启动时,系统首先从外存储器上将可执行程序文件代码装载到内存的代码区,然后从入口地址(即main函数的起始处)开始执行。 * 程序在执行过程中,如果遇到了对其他函数的调用,则暂停当前函数的执行,保存下一条指令的地址(即返回地址,作为从被调函数返回后继续执行的入口点),并保存现场,然后转到被调函数的入口地址,执行被调函数。 当遇到return语句或者被调函数执行结束时,则恢复先前保存的现场,并从先前保存的返回地址开始继续执行主调函数的其余部分。 * 【例4-1】函数的调用执行过程。 main函数 调用max函数 执行结束 ① ⑦ 保存返回地址当前现场 max函数 恢复主调函数的现场返回地址 ② ③ 返回 ④ ⑤ ⑥ * 3.调用函数时的前提条件 在一个函数中调用另一个函数,需要具备的条件有以下几点: (1)首先被调用的函数必须是已经存在的函数。 如果调用库函数,一般应在本文件的开头用#include命令将调用有关库函数时所需用到的信息包含到本文件中。 如果调用用户自己定义的函数,则必须对被调函数的原型进行说明。 函数类型 函数名(参数类型1, 参数类型2, …) 函数类型 函数名(参数类型1 参数名1, 参数类型2 参数名2,…) * (2)对函数原型的说明可以放在程序的顶部,也可以放在主调函数体的内部。 通常对程序中需要调用的所有函数的说明存放到一个头文件(.h文件)中,然后利用#include命令将其嵌入到程序中; 这样,程序就可以任意调用各个函数,不必再关心哪个被调函数是否已经进行了说明。 * (3)如果在程序中被调函数的定义出现在主调函数的前面时,可以省略对被调函数的说明。 通常在程序的首部需要对本程序中所有已定义的函数都进行说明,以便程序中对这些函数进行调用。 * 4.函数定义与函数说明间的区别 (1)函数的“定义” 是指一个函数功能的确立包括指定函数名、函数返回值的类型、形参及其类型、函数体等。 它是一个完整的、独立的函数单位。 * (2)函数的“说明” 只是对已经定义好的函数的返回值进行类型的说明。 它包括函数名、函数类型和形参及其类型,而不包括函数体。 函数说明的作用是告诉系统,在本函数中将要用到的函数是什么类型,也就是说明该函数的返回值的类型,以便在主调函数中按此类型对函数值作相应的处理。 函数说明中也可以不必指出形参列表中的变量名,但是必须要指出每个参数的数据类型。 * 4.2.2 函数的嵌套调用 在C++语言中,函数的定义是平行的、独立的,即在定义一个函数时,其内部不能再包含另一个函数的定义。 所以,函数的定义是不能嵌套进行的,但函数的调用是可以的。 嵌套调用就是在调用一个函数的过程中又调用另一个函数,如图4-2所示。 * * 4.2.3 函数的递归调用 1.函数递归调用的概念 函数的递归调用就是当一个函数在执行的过程中出现了直接或间接地调用函数本身的函数调用方式。 如果是直接调用函数本身,则称为直接递归; 如果是通过调用另外一个函数间接调用本身,则称为间接递归,即函数的嵌套调用是函数本身。 * 函数的递归调用应该说是函数的嵌套调用的特殊形式。 下面定义求n!的函数。 long fact(long n) { if (n= =0) return 1; return fact(n-1)*n; } * 在正确理解函数的递归调用时,可以认为,每当递归调用一次函数本身,就相当于产生了该函数的一个副本(就相当于是另外一个函数),直到最后一次

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档