- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- 第11章 FTP 服务器.ppt
- 第11章 linux.ppt
- 第11章 linux DNS.ppt
- 第11章 Linux操作系统基础.ppt
- 第11章 shell程序设计.ppt
- 第11章 Shell的使用.ppt
- 第11章 Squid代理服务的配置与应用.ppt
- 第11章 Visual Basic 6.0中的数据库编程.ppt
- 第11章 并发控制.ppt
- 第11章 函数二.ppt
- 执业药师之《药事管理与法规》检测卷讲解含答案详解(最新).docx
- 执业药师之《药事管理与法规》全真模拟模拟题及答案详解(全国通用).docx
- 2025年执业药师之《西药学综合知识与技能》模拟试题附参考答案详解(突破训练).docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库含答案详解(培优a卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题精选附答案详解(名师推荐).docx
- 执业药师之《药事管理与法规》强化训练模考卷带答案详解.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺测试卷包附参考答案详解(b卷).docx
- 2025年执业药师之《西药学综合知识与技能》模考模拟试题及参考答案详解(夺分金卷).docx
- 2025年执业药师之《西药学综合知识与技能》真题含答案详解【b卷】.docx
- 2025年执业药师之《西药学综合知识与技能》考前冲刺模拟题库带答案详解(b卷).docx
最近下载
- 贵州省事业单位人员聘用合同书.doc VIP
- 4.建筑施工企业项目负责人安全生产考核合格证书样本.pdf VIP
- 贵州省事业单位人员聘用合同书范本.docx VIP
- 皮带接头硫化上.pptx VIP
- 陕西省事业单位合同5篇.docx VIP
- 贵州省事业单位人员聘用合同书(合同范本).pdf VIP
- SYT 4201.2-2019 石油天然气建设工程施工质量验收规范 设备安装工程 第2部分:塔类.docx VIP
- SYT 4201.4-2019 石油天然气建设工程施工质量验收规范设备安装工程 第4部分:炉类.docx VIP
- 解读2021新安全生产法课件PPT(内容完整).pptx VIP
- SY_T 4201.3-2019 石油天然气建设工程施工质量验收规范 设备安装工程 第3部分:容器类.docx VIP
文档评论(0)