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

c语言全局变量专用课件.pptVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言全局变量专用课件

类 比 引 入 全局变量前加 函数名前加 * 8.8 局部变量和全局变量 8.8.1 局部变量 定义:在一个函数内部定义,只在本函数范围有效的变量。 float f1 ( int a) {int b,c; } main ( ) {int m,n; } a、b、c有效 m、n有效 说 明 1. 主函数中定义的变量也只在主函数中有效。 2. 不同函数中可以使用相同名称的变量。 3. 形参也是局部变量。 4. 复合语句中定义的变量只在本复合语句中有效。 main ( ) {int a,b; {int c; c=a+b; } } c有效 a、b有效 这种复合语句又称为“分程序”或“程序块”。 8.8.2 全局变量 定义:在一个函数之外定义、从定义的位置开始,到源程序的 最后都有效的变量,所以也叫外部变量。 int p=1,q=5; /* 外部变量 */ float f1(int a) /* 定义函数f1 */ {int b,c; } char c1,c2; /* 外部变量 */ char f2(int x,int y) /* 定义函数f2 */ {int i,j; } main ( ) /* 主函数 */ {int m,n; } 全局变量c1、c2的作用范围 全局变量 p 、 q的作用范围 说 明 1. 全局变量的作用范围不同。如p、q和c1、c2的作用范围不同。 2. 全局变量增加了函数间数据联系的渠道,可以用全局变量从函数得到一个以上的返回值。 3. 由于全局变量在程序的全过程都占用内存,并且使函数的通用性和清晰性降低,因此不必要时尽量少用全局变量。 4. 若在定义点之前的函数想引用该外部变量,则应在该函数中用关键字extern作“外部变量”说明。 5. 若在同一源文件中外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 求一维数组的平均、最大、最小值。 例8.15 例8.16 例8.17 8.9 动态存储变量和静态存储变量 8.9.1 变量的存储类别 存放全局变量 函数形参变量 局部变量(即自动变量,未加static说明) 函数调用时的现场保护 C语言中每个变量和函数都有数据类型和数据的存储类别两个属性。数据类型如整型、字符型等。存储类别指的是数据在内存中存储的方法,包括静态存储类和动态存储类,具体有以下4种: 自动的(auto)、静态的(static)、外部的(extern)、寄存器的(register)。 8.9.2 局部变量的存储方式 1. 函数中的局部变量若未做专门说明都为动态存储变量,其存储空间的分配与释放由编译系统完成,因此又称为自动变量,用auto作存储类型的说明,它是系统隐含的存储类型,因而auto可省略。 2. 局部静态变量用static说明,函数调用结束后,所占用的内存单元不被释放。通过[例8.18]可了解其特点。 例8.18 关于局部静态变量的说明 1)局部静态变量属静态存储类别,整个程序运行期间不释放内存;而局部动态变量(auto)在调用结束后立即释放。见上表。 2)局部静态变量只在编译时赋一次初值;自动变量则在调用时赋初值。 3)若定义时局部变量不赋初值,则: 数值型:编译时赋0 静态变量 字符型:空字符 自动变量: 值不确定。 4)虽然局部静态变量在函数调用结束后仍然存在,但其他函数不能引用! 局部静态变量的应用场合 1)需要保留函数上一次调用结束时的值。 2)同样,局部静态变量不但占用内存,而且降低程序的可读性,因此不必要时应限制使用。 打印阶乘。 例8.19 练习:上述程序的fac函数内,统计此函数被main函数调用了多少次? 关于寄存器变量的说明 1)只有自动变量和形参可以作寄存器变量。寄存器在函数调用结束时释放。 2)寄存器数目受计算机系统限制,因此不能任意多的使用寄存器变量。 3)局部静态变量不能定义为寄存器变量。即不能将变量既放在静态存储区中,又放在寄存器中。 register static int a,b,c; 3. 寄存器变量用register说明,它将频繁使用的变量的值放在运算器的寄存器中,避免CPU与内存频繁打交道,其作用是提高程序的执行效率。 寄存器变量的使用 例8.20 8.9.3 全局变量的存储方式 全局变量在函数的外部定义,编译时

文档评论(0)

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

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

1亿VIP精品文档

相关文档