- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言程序设计 重庆大学课件 第08章 结构体类型和联合体类型课件
同名全局变量与局部变量作用域重叠问题 4.21 程序演示 0 x=20 x=10 x=0 用户使用内存存储空间的情况 程序区 静态存储区 动态存储区 用户区 所有的全局(外部)变量及静态局部变量都存放在静态存储区, 程序执行完毕才释放。 函数的形参 局部(自动)变量 4.3.2 变量的生存期 程序运行中,不同存储类别的变量,占用的存储区域不同,分配的存储时间(生存期)也不同。 按变量的生存期分类 局部变量(自动变量)的生存期:这类变量存储于内存的动态存储区,它在程序运行中使用到该变量的时间段存在。即程序进入该函数或复合语句时才分配存储空间,当该函数或复合语句执行完后存储空间被撤销。 全局变量或静态变量(全局或局部)的生存期:这类变量存储于内存的静态存储区,它在编译时分配存储空间,在程序运行的整个期间都存在。 4.3.2 变量的生存期 在C程序设计中,为了合理选择变量的存储类别,有必要对不同存储类别的变量在程序中的作用分两方面进行讨论。 全局变量的存储类别 对于全局变量而言,能够起作用的存储类别为extern 和 static。 局部变量的存储类别 对局部变量能够起作用的存储类别为auto 和 static。 1)全局变量的存储类别 extern 扩展作用域 static 限制作用域 限制强于扩展,即若两种存储说明对某全局变量同时出现,以限制说明为准。 int x; static int y; extern int x; extern int x; extern int y; y x x y是静态全局变量不能扩展作用域 X原作用范围 File1.cpp源文件扩展x File2.cpp源文件扩展x 使用extern声明,可扩充全局变量在一个源程序的作用域 例4.22 程序演示 1)全局变量的存储类别 X原作用域 X被扩充后的作用域 100 110 130 自动变量的生存期与其所在函数被调用运行的时间相同,并且自动变量的值在函数的多次调用中都不会保留。 为满足在函数的多次调用中,局部变量仍能在保持原来值基础上继续使用,C语言提供了静态存储类别(static)。 静态局部变量的定义形式: static 数据类型符 变量表; 2)局部变量的存储类别 静态局部变量具有如下特点: ①静态局部变量的存储空间在程序的整个运行期间是固定的。系统在编译时就为它分配存储空间,它的生存期是整个程序的运行期间。 ②静态局部变量的初始化是在程序编译时进行的。如果在定义时没有对它进行初始化,那么系统将它自动初始化为0(整型)、或’\0’(字符型)。 ③静态局部变量的值在函数多次调用中具有可继承性。 ④静态局部变量的值只能在定义它的局部范围内使用。在它的作用域范围之外,该静态局部变量虽然存在,但不能对它进行访问。 2)局部变量的存储类别 例4.23 静态局部变量与自动变量的比较 1 /* Name: ex04-23.cpp */ 2 #include stdio.h 3 void main() 4 { void f1(); 5 f1(); 6 f1(); 7 } 8 void f1() 9 { int a=10; 10 static int b=10; 11 a+=100; 12 b+=100; 13 printf(a=%d,b=%d\n,a,b); 14 } 例4.23 程序演示 2)局部变量的存储类别 110 110 a=110,b=110 110 210 a=110,b=210 b++; 函数与程序结构 函数的定义和调用 函数的嵌套调用和递归调用 变量的作用域和生存期 编译预处理 多源文件C程序的组织方法 编译预处理概念 编译预处理是C编译系统在对C源程序进行编译之前对它进行的一些预加工,然后再将处理的结果和源程序一起进行编译,以得到目标代码。恰当地使用C语言的编译预处理功能可以有效地提高程序开发效率。 编译预处理语句以#号开头、占用一个单独的书写行、语句的结尾不需要用“;”作为结束符。 编译预处理语句可以出现在C源程序的任何位置,其作用范围是从出现点开始到源程序末尾。 编译预处理语句常有三种形式 宏定义 文件包含 条件编译 4.4 编译预处理 宏定义分为代参数的宏定义和不代参数的宏定义 不代参数的宏定义 定义形式:#define 宏标识符 字符串 调用形式: 宏标识符(直接用在表达式中) 宏定义的作
您可能关注的文档
- ADBOX-一款真正让数码不卡的DM数字卫 星接 收 机使用说明书(图文)推荐.doc
- Ajlznm北仑区村集体经济组织财务管理制度(试行)教案.doc
- American History:The New Deal and World War教案.doc
- aLl超市货物促销管理课件.ppt
- APQP培训资料推荐.ppt
- AutoCAD2006机械制图实例教程课件 第1章 AutoCAD2006基础推荐.doc
- A公司全面风险管理分析课件.ppt
- B06追求卓越——美国八大名牌企业成功秘诀课件.doc
- b2c电子商务中的信用风险分析及对策课件.doc
- Barro_宏观经济学.(5th)_课后习题答案课件.doc
- 2025广西玉林北流市山围镇卫生院公开招聘5人笔试参考题库附答案解析.docx
- 2025六安霍邱县夏店镇面向社会选聘见习村干部20人笔试参考题库附答案解析.docx
- 2025年吉林市街道办人员招聘笔试备考题库及答案解析.docx
- 2025湖北随州市曾都医院引进急需紧缺高层次人才15人笔试参考题库附答案解析.docx
- 2025福建厦门市集美实验学校非在编教师招聘1人笔试参考题库附答案解析.docx
- 2025南平延平黄墩街道社区卫生服务中心招聘医师笔试参考题库附答案解析.docx
- 2025广西玉林市慈善总会公开招聘2人笔试参考题库附答案解析.docx
- 2025商洛市消防救援支队招聘政府专职消防员(11人)笔试参考题库附答案解析.docx
- 2025商洛市医疗卫生机构定向招聘考试笔试参考题库附答案解析.docx
- 2025年铜川市街道办人员招聘笔试备考题库及答案解析.docx
最近下载
- 2025年湖北省襄阳市襄阳四中学初三下学期四月调考化学试题含解析.doc VIP
- GBT 42706.1-2023 电子元器件 半导体器件长期贮存 第1部分:总则.doc
- 2018人教版七年级数学下册练习:期末达标检测卷.docx VIP
- AC-25厂拌热再生沥青混凝土试验段施工方案.doc
- 行业联盟与竞争格局演变-深度研究.pptx
- 2024-2025学年北京西城区九年级初三(上)期末道德与法治试卷(含答案).pdf
- 2025年山东省枣庄市滕州市高三二模物理试卷及答案.docx
- 第九章 压强和浮力(知识清单)【教师版】.docx VIP
- 2025保安员理论考试100题(附答案) .pdf VIP
- 2022年三级教育测试题.docx
文档评论(0)