- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第15章变量作用域和生存期(理论课)
/ 使用C语言开发简单应用 上一章内容回顾 函数定义 函数声明和函数原型 函数调用 函数的嵌套调用 函数的递归调用 文件包含 内部函数和外部函数 多文件程序编制 使用函数时应注意的问题 本章学习目标 理解变量的作用域 局部变量 全局变量 理解变量的生存期 静态存储方式 动态存储方式 理解变量的存储类别 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 理解静态局部变量 内容进度 变量的作用域 局部变量 全局变量 变量的生存期 存储方式 静态存储方式 动态存储方式 存储类别 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 局部变量 定义: 在函数内或语句块内定义,只在本函数或本语句块内有效。 说明: 不同函数或语句块可以定义同名的局部变量,分配不同的存储单元,互不干扰,不会发生混淆 函数的形参是局部变量,只能在函数内使用 局部变量 举例: 内容进度 变量的作用域 局部变量 全局变量 变量的生存期 存储方式 静态存储方式 动态存储方式 存储类别 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 全局变量 定义: 在所有函数外部定义的变量,有效范围从定义/声明的位置到本文件结束。 举例: 说明: 若全局变量与局部变量同名,则全局变量将被屏蔽。 当一个程序的许多函数都是使用一个全局变量时,全局变量为编程提供了方便。 但是应该避免不必要地使用全局变量,因为: 全局变量在程序的执行期间都占用内存,如果定义很多全局变量,则系统运行中需要消耗较多的内存 会降低函数的通用性、可靠性、可移植性 会降低程序清晰性,容易出错 全局变量 应用举例1: 全局变量 应用举例2: 全局变量 应用举例3: 内容进度 变量的作用域 局部变量 全局变量 变量的生存期 存储方式 静态存储方式 动态存储方式 存储类别 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 变量的存储方式 静态存储方式: 在程序运行期间分配固定的存储空间的方式。 静态存储区: 全局变量 静态局部变量 动态存储方式: 在程序运行期间根据需要动态地分配存储空间的方式。 动态存储区: 函数形参 函数调用时的现场保护和返回地址 非静态局部变量 内容进度 变量的作用域 局部变量 全局变量 变量的生存期 存储方式 静态存储方式 动态存储方式 存储类别 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 变量的存储类别 存储类别: 自动的(auto) 静态的(static) 寄存器(register) 外部的(extern) 变量定义: 一般形式:[存储类别] 数据类型 变量表; 举例: int sum; auto int a; register int i; static float x; extern char ch; auto变量 说明: 动态存储方式,存储在动态存储区 局部变量定义中存储类别省略时,默认为auto型 auto型变量在函数/语句块被调用时分配内存,每次调用都重新分配,重新赋初值,调用结束则释放空间。 auto型变量如果不赋初值,则其值是一个不确定的值。 静态局部变量 举例: 说明: 静态存储方式,在静态存储区分配单元,在程序运行期间都不释放。 静态局部变量具有可继承性,在整个程序运行期间只赋一次初值,以后调用不在重新赋初值,而只是保留上次调用后的值。 在定义时如果没有赋初值,则自动赋初值为该类型的零值。 静态局部变量具有全局的寿命和局部的可见性,作用域仍然是该函数/语句块内。 静态局部变量 应用举例:输出1~5的阶乘。 register变量 说明: 只有非静态局部变量和形参可定义为register变量,全局变量和静态局部变量不能定义为register变量。 一个系统中的寄存器数目是有限的,不能定义任意多个register变量。 在实践中很少使用register变量,因为目前很多编译器都具有优化选项,会自动把一些频繁使用的变量放在寄存器中以提高效率。 用extern声明外部变量 在一个文件内声明外部变量 在多个文件中声明外部变量 用static修饰全局变量 作用: 使全局变量只限于本文件使用,其他文件不能引用,可以防止其他程序无意中错误地引用了全局变量。 举例: 小结 应用举例 应用举例 分析: 本章内容总结 对变量的定义,有两种属性:数据类型和存储类别,例如: static int x;(定义静态局部变量或定义限于本文件使用的全局变量) auto int y;(定义自动变量,即局部变量) regiter int a;(定义寄存器
您可能关注的文档
- 成都保利国际广场-市场研究及初步定位建议报告3.ppt
- 新课标人教版2012届高三化学第一轮复习----水溶液中的离子平衡3.ppt
- 执业医师实践技能考核心电图试题集.ppt
- 昝飞-智障儿童青春期心理特点及对策2.ppt
- 智能算法(AntAlgorithm).ppt
- 政法干警面试基础理论.ppt
- 最新各部组织架构图071230(版).ppt
- 最新最实版SPC基本概念.ppt
- 最新CCTV-12超值套.ppt
- 智能手机市场概况及互联网手机分析.ppt
- 2025年中国锻铁围栏市场调查研究报告.docx
- 2025年中国椭圆型市场调查研究报告.docx
- 2025年中国无蔗糖原味豆浆市场调查研究报告.docx
- 2025-2031年中国泛在电力物联网行业发展运行现状及投资潜力预测报告.docx
- 2025年中国制袋机零件市场调查研究报告.docx
- 2025年中国智能除垢型电子水处理仪市场调查研究报告.docx
- 2025-2031年中国甘肃省乡村旅游行业市场深度研究及投资策略研究报告.docx
- 2025-2031年中国干海产品行业市场发展监测及投资战略规划报告.docx
- 2025年中国全铝图解易拉盖市场调查研究报告.docx
- 2025年中国人造毛皮服装市场调查研究报告.docx
文档评论(0)