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

函数与预处理.ppt

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

补充条件编译(3)#if常量表达式程序段1#else程序段2#endif(4)#if常量表达式1程序段1#elif常量表达式2程序段2#else程序段3#endif条件编译也可以用条件语句来代替,但是用条件语句将会对整个源程序进行编译,生成的目标代码文件可能会很长,而采用条件编译时,编译器会根据条件选择一些程序段来编译,生成的目标代码文件相对就较短。C语言程序设计本章小结函数的定义和声明函数的调用函数的返回类型和返回值函数的参数递归变量作用域变量的存储类别内部函数与外部函数预处理C语言程序设计#includestdio.hvoidfun();voidmain(){autointi; for(i=1;i=4;i++){fun();}}voidfun(){autointi=0;i++;printf(ihavebeencalled%dtimes.\n,i);}声明i为自动变量声明i为自动变量程序运行结果:ihavebeencalled1times.ihavebeencalled1times.ihavebeencalled1times.ihavebeencalled1times.15.8static变量当希望函数中的内部变量在函数调用结束后依然存在,并在下一次调用函数时,该变量仍然保留上一次函数调用结束时的值,则可以将该变量的存储类别声明为static。C语言程序设计15.8static变量静态变量的特点:1、生存期和程序的生存期一致。当程序被编译时,就为静态变量在内存中分配固定的存储单元,并初始化赋值。2、整个程序运行期间,静态变量一直占用存储单元,并且不再重新初始化。3、当程序运行结束时,静态变量的存储单元才会被释放。C语言程序设计15.8static变量#includestdio.hintk=1; //全局变量kvoidfun();voidmain(){intj;for(j=0;j2;j++)fun();k++; //全局变量k加1printf(k=%d,k); //输出全局变量k}voidfun(){staticintk=1; //请注意局部变量kprintf(fun:k=%d,,k);k++; //局部变量k加1}C语言程序设计15.8static变量#includestdio.hintfun(){staticintx=1;inty=1,z;x++;y++;z=x+y;printf(x=%d,y=%d,z=%d\n,x,y,z);returnz;}voidmain(){inti;for(i=0;i2;i++)printf(fun=%d\n,fun());}程序运行结果如图所示:C语言程序设计静态变量一直是存在的,直到程序结束时被释放,但只能在定义该变量的函数内使用。第一次x被初始化为1,第一次调用x加1后值为2;第二次调用,保留x上次调用的结果2,再次加1变为3;而动态变量y每次都要初始化为1。#includestdio.hintfac(intn);voidmain(){ inti; for(i=1;i=5;i++) {printf(%d!=%d\n,i,fac(i));}}intfac(intn){ staticintf=1; f=f*n; returnf;}声明f为静态变量程序运行结果:1!=12!=23!=64!=245!=120每调用一次,开辟新n,但f不是15.8static变量若初始化时static变量未被赋初值,则自动赋值为0(数值型)或空字符(字符型)。这与auto变量不同,auto变量初始化时如果未被赋值,它的值是一个不确定的值。第一次实参i1形参n1f1第二次实参i2形参n2f2第三次实参i3形参n3f6第四次实参i4

文档评论(0)

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

资料供参考。

1亿VIP精品文档

相关文档