第12章 C语言中用户标识符的作用域和存储类.pptVIP

第12章 C语言中用户标识符的作用域和存储类.ppt

  1. 1、本文档共25页,可阅读全部内容。
  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语言程序设计(二级) 万红波 烟台大学 第十二章 标识符的作用域和存储类 第十二章 标识符的作用域和存储类 12.1 局部变量、全局变量和存储分类 12.2 局部变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.4 函数的存储分类 12.1 局部变量、全局变量和存储分类 根据变量定义在程序中出现的位置: 局部变量:定义在函数内部(包括形式参数)或者复合语句内部的变量; 全局变量:定义在所有函数的外部; 12.1 局部变量、全局变量和存储分类 12.1.2 变量的存储分类:决定变量放在什么存储区 auto int i; static int i; 12.1 局部变量、全局变量和存储分类 变量的定义位置决定了变量是: 局部变量 全局变量 变量的存储类别决定了变量的存储位置 动态存储区 静态存储区 12.2 局部变量 12.2.1 auto变量 在函数内部或复合语句内定义的变量,默认就是auto变量; 局部auto变量存储单元分配在内存的动态存储区; 每当进入函数体或者复合语句时,系统自动为auto变量分配存储单元,并且由程序负责对其赋初值;退出时候自动释放存储单元,变量消失。 12.2 局部变量 12.2.1 auto变量的作用域和生存周期 12.2 局部变量 12.2.2 register变量 跟自动变量相同,具有相同的作用域和生存周期 建议编译程序将变量保存在CPU的寄存器中 12.2 局部变量及其作用域和生命周期 12.2.3 静态(static)局部变量 12.2 局部变量及其作用域和生命周期 12.2.3 静态(static)局部变量的作用域和生存周期 12.3 全局变量 12.3.1 全局变量的作用域和生存期 在函数外部定义的变量。 全局变量的作用域是从定义开始到源文件结束。 全局变量的生存期是整个程序的运行期间。 12.3 全局变量 12.3 全局变量 如果全局变量和函数中的局部变量重名,则在该函数中,全局变量被屏蔽。 12.3 全局变量及其作用域和生存期 12.3.2 同一个编译单位(一个c源程序文件)中使用extern对全局变量进行说明。 全局变量的定义; 全局变量的说明; 12.3 全局变量及其作用域和生存期 12.3.2 不同的编译单位中使用extern对全局变量进行说明 程序可以由多个源文件构成,每个源文件就是一个编译单元 12.3 全局变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.3.4 静态全局变量-只局限在本文件中,避免全局变量的冲突 12.4 函数的存储分类 函数默认是外部的,可以在其他源文件中调用 12.4 函数的存储分类 12.4 函数的存储分类 练习题12.5 练习题 12.9 练习题12.10 * * #include stdio.h double aaa=2.3; double add(double a,double b) { double s; s=a+b; aaa=3.5;//?? return s; } int main(int argc, char *argv[]) { double ab=1.0; int aaa;//?? aaa=5;//?? s=2.1;//?? printf(ab=%f,aaa=%d\n,ab,aaa); return 0; } 标识符的作用域:标识符可以定义在程序中的不同位置,具有不同的作用范围; 变量的生存期:变量的存在期限是不同的; 动态存储区(堆栈) 静态存储区 程序代码区 存储类关键字: auto 自动类别 register 寄存器类别 static 静态类别 extern 外部类别 动态存储区保存函数调用时的形式参数、函数的返回地址、自动类别的局部变量。 静态存储区存放全局变量和静态类别的局部变量。 动态存储区 静态存储区 程序代码区 void sub(float a) { auto int i; a=3;//?? if(i0) { int n;//定义在复合语句内部 i=9;//?? printf(%d\n,n); } n=23;//?? } int power(int x,register int n) { register int p; for(p=1;n;n--) p=p*x; return p; } 1. 静态局部变量保存在内存的静态存储区; 2. 静态局部变量的初值是编译时候赋予的,在程序执行期间不再赋予初值; 3. 对于未赋初值的静态局部变量,编译器自动赋0; int func() { static n=0;//定义静态局部变量,并初始化 n++; pri

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档