第11讲 函数嵌套、的递归.ppt

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

第七章 函数 例 统计字符个数 #includestdio.h int countch( ); /* 函数原型声明 */ void main( ){ int num; num = countch( ); printf(输入的字符个数 = %d\n, num); } int countch( ){ int cn=0; while(getchar( )!=\n) cn++; return cn; } 例 计算Fibonacci(斐波拉契)数列的第n项。 #includestdio.h int fib(int n){ int res; if(n==1||n==2) res=1; else res=fib(n-1)+fib(n-2); return res; } void main( ){ int m; scanf(%d, m); printf(fib(%d)=%d\n, m, fib(m)); } 变量的作用域是指定义变量的区域和可以引用变量的区域。 定义:在函数外定义的变量,也称外部变量。 作用范围:从其定义的地方开始直至源程序结束。 全局变量命名时,习惯采用首字母大写,其余字母小写的命名方法。 全局变量举例 int Abc, D1; void main( ){ float f1, f2; ··· } float Ka, Hc; void exchange(int x, int y){ double c, e; ··· } 例 说出下列程序的运行结果 #includestdio.h int X=3; int func( ){ int c=0; c+=X; X+=10; return c; } void main( ){ int k=2; k=func( ); printf(1) %d\n, k); k=func( ); printf(2) %d\n, k); } 全局变量的特点: 优点 利用全局变量可以从函数中得到一个以上的返回值。 利用全局变量可以减少函数中实参和形参的个数。 缺点 全局变量在程序运行过程中始终占据存储单元,而局部变量在函数被调用时才临时占用存储单元。 函数的通用性降低。 在同一个源程序中,当全局变量与局部变量同名时,在局部变量的作用域内,全局变量不起作用,即全局变量被“屏蔽”。 例 #includestdio.h int M = 5; int fun(int x, int y){ int M = 10; return x*y-M; } void main( ){ int a=7, b = 5; printf(%d\n, fun(a, b)/M); } 1、自动变量 用关键字auto作存储类型说明的局部变量(包括形参)称为自动变量。 自动变量存放在动态存储区,是动态分配存储空间的。 C语言规定:没有指明存储类别的局部变量,一律隐含定义为自动变量。 2、静态变量 所有全局变量和用关键字static作存储类型说明的局部变量称为静态变量。 静态变量存放在静态存储区,一旦为其分配了存储单元,它们在整个程序执行期间将固定地占据这些存储单元。 所有全局变量都是静态类的,如果明确用static作存储类型说明,则全局变量仅能为本源文件中各函数使用,不能为本源文件以外其他源文件中的函数所使用;如果省略static,则全局变量能被本源文件以外其他源文件中的函数所使用。 静态局部变量举例 #includestdio.h void f(int n){ static int s=0; s=s+1; printf(No.%d: s=%d\n, n, s); } void main( ){ int num; for(num=1; num4; num++) f(num); } 静态局部变量的特点: 静态局部变量在整个程序运行期间固定占有存储单元。 静态局部变量和全局变量一样,均只在编译时赋初值一次,以后每次函数调用时使用上次函数调用结束时的保留值. 静态局部变量定义时如不赋初值,系统编译时会自动对数值型静态局部变量赋初值为0,对字符型静态局部变量赋初值为\0。 静态局部变量仅能为定义它们的函数所使用,其他函数不能使用和影响它们。 3、寄存器变量 用关键字register作存储类型说明的局部变量称为寄存器变量。寄存器变量在可能的情况下,在程序执行时,存放在CPU的通用寄存器中。 说明: 通用寄存器的长度一般与

您可能关注的文档

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档