- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图9.1表示出各局部变量的作用域。 局部变量在没有被赋值之前,它的值是不确定的。 形参也是局部变量。它的作用域和使用规则,与函数内部的局部变量完全一样,不再讨论。 * 人民邮电出版社 * 第九章 数据的存储方式 9.1 局部变量和全局变量 9.2 变量的存储方式 9.3 内部函数和外部函数 9.4 动态存储单元 9.5 变量修饰符 const 9.1 局部变量和全局变量 函数的作用域规则,是关于控制一段代码是否能够调用或者访问另一段中的代码或数据的一些规定。 9.1.1 局部变量 在任何一个代码块内定义的变量叫做局部变量。所谓代码块就是在一对花括号内的代码段。说明局部变量最常见的代码块是函数。 图9.1 局部变量的作用域示意图 9.1.2 全局变量 在函数之外定义的变量,称为全局变量,也叫做外部变量。 9.2 变量的存储方式 我们从变量的作用域的角度,把变量区分为全局变量和局部变量。从变量值存在时间的角度看,变量又可分为静态存储变量和动态存储变量。 供用户使用计算机的内存空间,可分为以下三个部分: (1) 应用程序区; (2) 静态存储区; (3) 动态存储区。 在两大类存储方法中,变量又可具体分为四种:自动的(auto)、静态的(static)、寄存器的(register)和外部的(extern)。 在变量定义语句中,存储定义符放在它所修饰的基本数据类型前面,其一般形式如下: storage_type type_specifier variable_list; 这里,storage_type是存储定义符(auto,static,register,extern);type_specifier是基本数据类型; variable_list是被说明的变量名表。 9.2.1 局部变量的存储定义 1. 自动变量(auto) 局部变量一般情况下(不加特殊声明)属于动态存储类。 2. 静态局部变量(static) 有时希望局部变量的值,在每次离开其作用范围后不消失并保持原值,占用的存储空间不释放。这时,应该用存储定义符static将变量定义为静态局部变量。例如语句: static int num1, num2; 定义变量num1和num2为静态局部变量。 3. 寄存器变量(register) 如果变量在程序运行中使用非常频繁,则为存取该变量要消耗很多时间。利用寄存器操作速度快的特点,将变量存放在CPU的寄存器中,可以提高程序的运行效率。寄存器变量占用CPU的高速寄存器,不占用内存单元。变量的值就保存在CPU的寄存器中。 定义寄存器变量语句的一般形式为: register 类型名 变量名表; 9.2.2 全局变量的存储定义 1. 外部全局变量 如果在一源文件中将某些变量定义为全局变量。而这些全局变量允许其它源文件中的函数引用的话,就需要有一种办法,把程序的全局变量告诉所有的模块文件。解决的办法是,在一个模块文件中将变量定义为全局变量,而在其它模块文件中,用extern来说明这些变量。例如, extern int a; 说明整型变量a在其它源程序文件中已经定义为全局变量,在本文件中被说明是外部存储类型的,因而本文件可以引用。 2. 静态全局变量 静态全局变量是这样一种全局变量,它在被定义的源程序文件以外是不可见的。也就是说,静态全局变量只限于它所在的源程序文件中的函数引用,而不能被其它源程序文件中的函数引用。静态全局变量定义的形式是在全局变量定义语句的数据类型前加静态存储定义符static。其形式和局部静态变量是一样的。例如, static int a: 定义为静态全局变量。 9.2.3 变量存储类型小结 一个数据包含有两个属性:数据类型和存储类型。 从作用域的角度,我们有局部变量和全局变量。按它们的存储类别,局部变量又分为自动的、静态的和寄存器的三种。全局变量又分为静态的和外部的两种。 变量的存储类型 ? 定义语句块内 作用域 存在性 定义语句块外 作用域 存在性 文件外 作用域 存在性 局部变量 auto register static ∨ ∨ ∨
文档评论(0)