- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 变量的存储类别和作用域
5.1 变量类别概述 从变量的作用域(即从空间)角度来分,可以将变量分为全局变量和局部变量;从变量存在的时间(即生存期)来分,可以分为静态存储变量和动态存储变量。动态数据存储在内存的堆栈区,静态数据存储在内存的固定存储区,即静态存储区;全局变量存储在内存的固定存储区,局部变量存储在内存的堆栈区。 5.2 局部变量 主函数main()中定义的变量(m和n)只在主函数中有效,而不因为在主函数中定义就会在整个文件或程序中有效。 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。例如,在f1()函数中定义了变量b和c,倘若在f2()函数中也定义变量b和c,它们在内存中占不同的单元,互不混淆。 形式参数也是局部变量。 在一个函数内部,可以在语句块(复合语句)中定义变量,这些变量只在该语句块(复合语句)中有效,这种语句块(复合语句)也可称为“分程序”或“程序块”。 5.3 全局变量 5.3.1 全局变量的定义及其作用范围 在函数内定义的变量是局部变量,而在函数外定义的变量称为外部变量,外部变量是全局变量。全局变量可以为本文件中的其他函数所共用。它的有效范围是从定义变量的位置开始到本源文件结束。 5.3 全局变量 5.3.2 全局变量的有关说明 (1)设立全局变量增加了函数间数据联系的渠道。 (2)建议不是必要时不要使用全局变量。 (3)如果外部变量在文件开头定义,则在整个文件范围内都可以使用该外部变量。 5.4 寄存器变量 为提高程序的执行速度,C语言中允许将局部变量的值放在运算器的寄存器中,需要时直接从寄存器中取出参加运算,不必再到内存中去取,这样可以提高程序的执行效率。这种变量叫“寄存器变量”,用关键字register说明。 例如: register int i; register char ch; register float x; 在寄存器变量的说明中关键字int可以省略。 5.5 静态存储变量 5.5.1 局部静态存储变量 局部静态变量属于静态存储类,在静态存储区内分配存储单元,在程序的整个运行期间都不释放。 局部静态变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再赋初值,而只是保留上次函数调用结束时的值。对自动变量的赋初值,不是在编译时进行,而是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。 在定义局部静态变量时不赋初值,编译时自动赋0(对数值型变量)或空值(对字符型变量)。 虽然局部静态变量的值在函数调用结束后仍然存在,但其他函数是不能引用的。 5.6 动态存储变量 函数形参变量(只有在调用函数时才给形参分配存储空间)。 局部变量(加了static说明的除外)。 函数调用时的现场保护和返回地址等。 5.7 变量存储类别 (1)从作用域角度来看,变量分为局部变量和全局变量。 (2)从变量存在的时间来看,变量分为动态存储变量和静态存储变量两种类型。 (3)从变量存放的位置来看,变量可分为在内存静态存储区、内存动态存储区及寄存器中三种。 (4)变量的作用域和生存期。 C语言程序设计 21世纪中等职业学校系列计算机规划教材 C语言程序设计 21世纪中等职业学校系列计算机规划教材 第5章 变量的存储类别和作用域 本章学习要点: 5.1 变量类别概述 5.2 局部变量 5.3 全局变量 5.4 寄存器变量 5.5 静态存储变量 5.6 动态存储变量 5.7 变量存储类别
文档评论(0)