C语言中用户标识符的作用域和存.pptVIP

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

* 第12章 用户标识符的作用域和存储类 12.1 局部变量、全局变量和存储分类 12.2 局部变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.4 函数的存储分类 变量的作用域: 局部变量:在函数内部或复合语句内部定义的变量。 全局变量:在函数外部定义的变量。 变量的生存期: 动态类:在函数内部或复合语句内部定义的变量。 静态类:在函数外部定义的变量。 定义变量:[存储类别] 数据类型 变量名; 根据变量的存储类别就可以知道变量的作用域和 生存期。 12.1 局部变量、全局变量和存储分类 变量的作用域与其定义语句在程序中出现的部 位有直接的关系。 在函数内部或复合语句定义的变量,称为局部 变量。 局部变量只在本函数内或复合语句中有效。 不同函数中可以使用相同名字的变量。 在函数外部定义的变量,称为全局变量。 例1:#include “stdio.h” float f1(int a) { int b,c; …… } char f2(int x,int y) { int i,j; …… } void main( ) { int a,b,c; …… } 例2:#include “stdio.h” void main( ) { int x=10; { int x=20; printf(“%d,”,x); } printf(“%d\n,x); } 12.2 局部变量及其作用域和生存期 情况1:auto变量(动态的局部变量) 系统默认的变量属性就是auto类型,所以通常 情况下很少使用关键字auto。 auto变量在进入声明该变量的函数时建立,退 出该函数时撤销。 未赋初值的auto变量其值不确定,称为“无定 义”。 优点:可在各函数之间造成信息隔离,不同函 数中使用了同名变量也不会相互影响,从而可 避免因不慎赋值所导致的错误影响到其他函数。 例1:int fun(int a) { int b,c=3; …… } 例2:int fun(int a) { auto int b,c=3; …… } 等价 情况2:register变量(动态的局部变量) 用register说明的变量建议编译程序将变量的 值保留在CPU的寄存器中。 访问存于寄存器内的值要比访问于内存中的值 要快得多。 CPU中寄存器的数目是有限的,不能定义任意多 个register变量。 当没有足够的寄存器来存放指定的变量,或编 译程序认为指定的变量不适合放在寄存器中时, 将自动按auto变量来处理。 #include “stdio.h” int power(int,register int); void main( ) { int s; s=power(5,3); printf(“%d\n”,s); } int power(int x,register int n) { register int p; for(p=1;n;n--) p=p*x; return p; } 例1: 情况3:静态的局部变量 即用关键字static声明的局部变量。 在整个程序运行期间,静态局部变量占据着永 久性的存储单元。 下次调用该函数时,该变量拥有最近一次退出 该函数时所拥有的值。 静态变量的初始化只执行一次。 对于未赋初值的静态局部变量,C编译程序自动 给它赋初值0。 虽然静态局部变量在函数调用结束后仍然存在, 但其他函数是不能引用它的。 例:#include “stdio.h” void main( ) { int i,j=2; for(i=0;i3;i++) printf(“%4d”,function(i)); } int function(int a) { int b=0; b++; c++; return (a+b+c); } static int c=3; 输出结果:7 8 9 static int c; 输出结果:4 5 6 12.3 全局变量及其作用域和生存期 全局变量只有静态一种类别。 全局变量是在函数外部任意位置上定义的变量, 它的作用域是从变量定义的位置开

文档评论(0)

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

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

1亿VIP精品文档

相关文档