第06节 函数.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文档。上传文档
查看更多
第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 /*利用递归调用求n!的函数*/ float fac(int n) {float f; if (n==1) f=1;else f=fac(n-1)*n; return f; } 计算4!(fac(4))的递归过程图: fac(4) ( 4→n) f=fac(n-1)*n 即:fac(3)*4 fac(3) (3 →n) f=fac(n-1)*n 即:fac(2)*3 fac(2) (2 →n) f=fac(n-1)*n 即:fac(1)*2 fac(1) (1 →n) f=1 return f (使fac(1)=1) return f (使fac(2)=2) return f (使fac(3)=6) return f (使fac(4)=24) 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 注: ⑴递归调用都有一个调用结束后的返回过程。 ⑵递归算法往往在一级一级调用过程中尚没有结果,返回时才逐步得到结果。 ⑶利用递归编程将使程序的执行效率非常低,不是万不得已,一般不宜采用。 对上例,fac函数可修改一下,以观察其调用过程。见L6_8.c 6.2.1 问题的提出 6.2.2 auto变量 6.2 变量的作用域与生命期 6.2.3 extem变量 6.2.4 static变量 6.2.5 register变量 6.2.6 存储类别小结 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 【例6.10】i的输出值是多少? #include stdio.h void f( ) { int i; i=3; } main() { int i=0; f(); i+=5; printf(”i=%d”,i); } 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 要使main中的i的值为3,必须满足下列的条件: (1)函数f中语句“i=3;”中的i与main中的i 是同一个变量。 (2)函数调用结束后f中的i值依然存在。 这两个条件均不成立,i的值为5 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 变量在程序正文中合法出现的区域称为变量的作用域。函数中的变量在该函数调用结束后,是否依然存在,称为变量的生命期。 变量出现的有效区域称为变量的作用域 。 变量占据内存的时间期限为变量的生命期。 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 从变量的作用域范围的不同,变量可分为:局部变量和全局变量。 局部变量:在一个函数内部定义的变量。又叫内部变量 全局变量:在函数之外定义的变量。又叫外部变量或全程变量 说明: 局部变量只有在本函数内才能使用它们,即在本函数内有效,任何函数不能使用其它函数的局部变量。 不同函数内的同名局部变量互不干扰。 函数的形参也是局部变量。 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 虽然main()函数地位特殊,但其内部定义的变量也是局部变量,同样具有局部变量的特点。 在一个函数内的复合语句中也可以定义局部变量(又叫程序块级的局部变量),这种局部变量只在本复合语句中有效。它比函数级的局部变量的作用域范围更小。 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 double fun1(double p1) {int p2,p3; : p1,p2,p3的有效区域 : } Char fun2 (char p4) {char p5,p6; : p4,p5,p6的有效区域 : } 第 章 6 函数、存储类和预处理程序 函数 变量的作用域和生命期 预处理程序 main() {float x,y; : : {int a,b; : a,b的有 x,y的

文档评论(0)

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

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

1亿VIP精品文档

相关文档