(C语言课件)第八章函数.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.局部变量的存储方式 f(a) int a; {auto int b=0; static int c=3; /*静态区的变量只在开始时初始化一次*/ b=b+1; c=c+1; return(a + b + c); } main( ) {int a=2, i; for(i=0; i3; i++) printf(“%d ”, f(a)); } 运行结果:7 8 9 main i a f(a) 0 2 f(2) 1 2 f(2) 2 2 f(2) f (a) a b c return(a+b+c) 2 0 3 1 4 return(7) 2 0 4 1 5 return(8) 2 0 5 1 6 return(9) 4.在Turbo C 中,局部(非全局)和动态(非局部静态)类型的数组也可初始化 例2 main( ) {int a[4]={2, 4, 6, 8}; int i; for(i=0; i4; i++) printf(“a[%d]=%x, a[%d]=%d\n”,i, a[i], i, a[i]); } 运行结果: a[0]=ffcc, a[0]=2 a[1]=ffce, a[1]=4 a[2]=ffd0, a[2]=6 a[3]=ffd2, a[3]=8 例3 main( ) {static int a[4]={2, 4, 6, 8); int i; for(i=0; i4; i++) printf(“a[%d]=%x, a[%d]=%d\ n”, i, a[i], i, a[i]); } 运行结果: a[0]=194, a[0]=2 a[1]=196, a[1]=4 a[2]=198, a[2]=6 a[3]=19a, a[3]=8 5、局部静态变量在函数调用结束后,结果仍被保存,下次调用时可继续使用(甚至其它函数也可使用) 例T7-19.c 打印 1~5的阶乘 int fac(n) int n; {static int f=1; f=f* n; return(f) ;} main( ) {int i; for(i=1; i=5; i++) printf(“%d != %d\n”, i, fac(i)); } main( ) i fac(i) 1 fac(1) 2 fac(2) 3 fac(3) 4 fac(4) 5 fac(5) fac (n) 输出结果 n f=f* n f=1 1 f=1* 1=1 1 ! = 1 2 f=1* 2=2 2 ! = 2 3 f=2* 3=6 3 ! = 6 4 f=6* 4=24 4 ! = 24 5 f=24* 5=120 5 ! = 120 问题: 1.将static 改为auto 2.其它函数能否使用局部静态变量? 三、 全局变量的存储方式 全局变量:在各函数外部定义,被分配在静态存储区,可为程序中各函数所引用,若一个程序由多个函数组成且分布在多个文件中, ??? 全局变量都是静态存储方式,不允许用auto来定义全局变量。 可以用static来定义全局变量。如: static int x; 静态全局变量(内部的) int y; 非静态全局变量(外部的) 对于非静态全局变量,其它文件中的函数只要用extern加以外部说明,就可以访问。 而对于静态全局变量,只局限在本文件中的所有函数访问,其它文件中的函数即使用extern加以外部说明,也不能访问。 int y; main() { y=0

文档评论(0)

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

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

1亿VIP精品文档

相关文档