第20讲 局部变量 全局变量和存储分类 局部变量作用域和生存期lgf.ppt

第20讲 局部变量 全局变量和存储分类 局部变量作用域和生存期lgf.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第20讲 局部变量 全局变量和存储分类 局部变量作用域和生存期lgf

第20讲 局部变量 全局变量和存储分类 局部变量及其作用域和生存期 第12章 用户标识符的作用域和存储类 2. 局部变量 3. 全局变量 5. 变量的存储类型 6. 变量的存储类型、作用域与生存期 12.2 局部变量及其作用域和生存期 auto变量的应用示例(1/8) auto变量的应用示例(3/8) auto变量的应用示例(4/8) auto变量的应用示例(5/8) auto变量的应用示例(6/8) auto变量的应用示例(7/8) auto变量的应用示例(8/8) * 12.1 局部变量、全局变量和存储分类 1. 用户标识符的作用域 在C语言中,由用户命名的标识符都有一个有效的作用域。所谓“作用域”是指程序中的某一部分,只有在这一部分中,该标识符才是有定义的,即只有在这个域中才能使用该标识符。 例如,在某一函数内定义的变量,只能在该函数内进行使用。显然,变量的作用域与其定义语句在程序中出现的位置有直接的关系。由此可以划分为局部变量和全局变量。 局部变量 定义:在函数内定义,只在本函数内有效 说明: ①在main函数中定义的变量只能在main函数中有效 ②不同函数中的同名变量,占不同的内存单元 ③函数的形参属于局部变量 ④可以定义只在某个复合语句中有效的变量 float f1(int a) { int b,c; ……. } char f2(int x,int y) { int i,j; …… } main() { int m,n; ……. } a,b,c有效 x,y,i,j有效 m,n有效 例 不同函数中同名变量 main() { int a,b; a=3; b=4; printf(main:a=%d,b=%d\n,a,b); sub(); printf(main:a=%d,b=%d\n,a,b); } sub() { int a,b; a=6; b=7; printf(sub:a=%d,b=%d\n,a,b); } 应尽量少使用全局变量,因为: 全局变量在程序全部执行过程中始终占用存储单元 降低了函数的通用性、可靠性,可移植性 降低程序清晰性,容易出错 全局变量说明: extern 数据类型 变量表; 若全局变量与局部变量同名,则全局变量被屏蔽 定义:在函数外定义,可为本文件内的所有函数共用 有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件 全局变量定义 全局变量说明 次数: 只能1次 可说明多次 位置: 所有函数之外 函数内或函数外 分配内存: 分配内存,可初始化 不分配内存,不可初始化 变量的属性 数据类型:变量所持有的数据的性质(操作属性) 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时刻存在-------静态变量与动态变量 作用域:变量在某区域内有效-------局部变量与全局变量 指定变量的存储类型时所要用的关键字 auto -----自动型 register-----寄存器型 static ------静态型 extern -----外部型 变量定义格式: [存储类型] 数据类型 变量表; 如: int sum; auto int a,b,c; register int i; static float x,y; 4. 变量的存储属性 程序区 静态存储区 动态存储区 全局变量、静态局部变量 形参变量 动态局部变量(auto、register) 函数调用现场保护和返回地址等 生存期 静态变量:从程序开始执行到程序结束 动态变量:从包含该变量定义的函数开始执行至函数执行结束 静态存储:程序运行期间分配固定存储空间 动态存储:程序运行期间根据需要动态分配存储空间 内存用户区 静态 动态 存储方式 程序整个运行期间 函数调用开始至结束 生存期 编译时赋初值,只赋一次 每次函数调用时 赋初值 自动赋初值0或空字符 不确定 未赋初值 静态存储区 动态区 存储区 寄存器 局部变量 全部变量 作用域 定义变量的函数或复合语句内 本文件 其它文件 局部变量默认为auto型 register型变量个数受限,且不能为long, double, float型 static局部变量具有全局寿命和局部可见性 stati

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档