网站大量收购闲置独家精品文档,联系QQ:2885784924

《C语言程序设计》第10讲_函数-教学课件(非AI生成).ppt

《C语言程序设计》第10讲_函数-教学课件(非AI生成).ppt

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

*AmericanNationalStandardsInstitute(ANSI——美国国家标准学会)InternationalStandardOrganized(ISO----国际标准化组织)***这个程序在VisualC++6.0环境下编译不会显示任何警告信息,但在Code:Blocks下编译会显示如下警告信息,提示程序第23行语句中的条件判断是永假的:warning:comparisonofunsignedexpression0isalwaysfalse*******************递归与迭代用迭代(即循环)方法编写的阶乘函数unsignedlongFact(unsignedintn){unsignedlongresult=1;unsignedinti;for(i=1;i=n;i++)result*=i;returnresult;}递归程序遵循了数学中对阶乘的定义因此递归方法编写程序具有更清晰、可读性更好的优点*递归与迭代1,1,2,3,5,8,......longFib(intn){ longf; if(n==0)f=0; elseif(n==1)f=1; elsef=Fib(n-1)+Fib(n-2); returnf;}154323221101010计算fib(5)共需15次fib调用【例】计算Fibonacci数列*递归与迭代优点:从编程角度来看,比较直观、精炼,逻辑清楚符合人的思维习惯,逼近数学公式的表示尤其适合非数值计算领域hanoi塔,骑士游历、八皇后问题(回溯法)缺点:增加了函数调用的开销,每次调用都需要进行参数传递、现场保护等耗费更多的时间和栈空间应尽量用迭代形式替代递归形式*变量的作用域和存储类型变量的作用域(Scope)指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(LocalVariable)全局变量(GlobalVariable)*局部变量(LocalVariable)在语句块内定义的变量形参也是局部变量特点生存期是该语句块,进入语句块时获得内存,仅能由语句块内语句访问,退出语句块时释放内存,不再有效定义时不会自动初始化,除非程序员指定初值并列语句块各自定义的同名变量互不干扰形参和实参可以同名*全局变量(GlobalVariable)在所有函数之外定义的变量生存期是整个程序,从程序运行起占据内存,程序运行过程中可随时访问,程序退出时释放内存有效范围是从定义变量的位置开始到本程序结束*全局变量(GlobalVariable)【例】打印计算Fibonacci数列每一项时所需的递归调用次数全局变量使函数间的数据交换更容易,更高效,但建议尽量少用,因为谁都可改写它,所以很难确定是谁改写了它全局变量*变量的存储类型(StorageClass)指数据在内存中存储的方式即编译器为变量分配内存的方式,它决定变量的生存期存储类型数据类型变量名;C程序的存储类别auto型(自动变量)static型(静态变量)extern型(外部变量)register型(寄存器变量)*C语言程序的内存映像C语言程序的内存映像包含了代码中的字面值常量。存放全局变量和标明为静态类的局部变量。栈:保存函数调用时的返回地址、函数的形参、自动局部变量,以及CPU的当前状态。堆:自由内存区域。程序代码静态存储变量堆栈程序可以访问的内存区域。数据段代码段动态存储区用户区静态存储区*静态存储区中的变量:与程序“共存亡”动态存储区中的变量:与程序块“共存亡”寄存器中的变量:同动态存储区变量的生存期(Lifetime)决定何时“生”,何时“灭”变量的存储类型(StorageClass)*auto数据类型变量名;auto体现在进入语句块时自动申请内存,退出时自动释放内存动态局部变量,缺省的存储类型静态变量static数据类型变量名;staticstorageclassforlocalvariables(declaredinsideablockorfunction)-thelife

您可能关注的文档

文档评论(0)

188****7976 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档