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

第7章函数-模块化程序设计-预处理命令试卷.ppt

第7章函数-模块化程序设计-预处理命令试卷.ppt

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * %p 是以16进制的形式输出内存地址? %x 也是以16进制的形式输出内存地址(整数) 不过%p的输出字符为8个前2个为00 %x只有6个 * * * * * * * * * * * * * * * * * * * * * * * 使用局部静态变量的场合 (1)需要保留上一次调用结束时的值 C语言程序设计 第七章 函数 例7.18 打印1到5的阶乘值 #include stdio.h void main( ) {int fac(int n); int i; for(i=1; i=5; i++) printf(“%d != %d\n”, i, fac(i)); } int fac(int n) { static int f=1; f=f*n; return(f); } 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 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=24 5!=120 (2)初始化后变量只被引用而不改变其值,则用静态局部变量较方便,以免每次调用时重新赋值,但会一直占用内存浪费系统资源。 register(寄存器型)变量 CPU内有寄存器可用来存放数据,若把数据声明为寄存器类型,则将该类型的数据存放在寄存器中,其优点是:减少数据与内存之间的交换频率,提高程序的效率和速度。 C语言程序设计 第七章 函数 CPU 寄存器组 内存 例7.19 使用寄存器变量 #include stdio.h void main( ) { long fac(long); long i, n; scanf(“%ld”,n); for(i=1; i=n; i++) printf(“%ld != %ld\ n”, i, fac(i));} long fac(long n) { register long i, f=1; for(i=1; i=n; i++) f=f * i; return(f); } 运行结果: 1 ! = 1 2 ! = 2 3 ! = 6 4 ! = 24 5 ! = 120 寄存器类型变量的几点说明: 1. 局部自动变量类型和形参可定义为寄存器变量。 2. 由于CPU具有的通用寄存器数量有限,C程序中允许定义的寄存器类型的变量一般以2个左右为宜。超过的话,系统会自动将超过的变量设为自动型变量。 3. 局部静态变量不能定义为寄存器变量。 4. long,double,float不能设为register型,因为超过寄存器长度 C语言程序设计 第七章 函数 用extern声明外部变量 外部变量也称全局变量,在函数外部定义,其作用域是从变量的定义处开始,到本程序文件的未尾。在定义的作用域内,全局变量可为程序中各个函数所引用。 可以用extern声明外部变量,以扩展外部变量的作用域。 C语言程序设计 第七章 函数 在一个文件内声明外部变量 外部变量没在文件开头定义,其作用域为定义处到文件结束。定义处之前的函数要使用,则在引用前用关键字extern作“外部变量声明”。 例8.20 用extern声明外部变量,扩展作

文档评论(0)

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

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

1亿VIP精品文档

相关文档