- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计(07776-1)第7章变量的作用域和存储类型课案.ppt
第7章 变量的作用域和存储类型 主要内容 变量的作用域 变量的存储类型 变量的初始化 程序案例 小结 习题 7-1 变量的作用域 局部变量 全局变量 局部变量 在函数内部或复合语句内部定义的变量,称作局部变量。函数的形参也属于局部变量。局部变量的作用域是定义该变量的函数或复合语句,在其他范围内无效。一般地,局部变量只有定义,没有说明,因为局部变量不能跨越几个编译单位使用。 全局变量 在函数外部定义的变量称作全局变量,也称外部变量。全局变量的作用域是从定义变量的位置开始,到整个文件结束停止。 若全局变量和某个函数中的局部变量同名,则在该函数中,这个全局变量被屏蔽。在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。 由于通过return语句只能返回一个函数值,同时由于非数组作函数参数时采用值传递方式,这样,要想在函数之间传递大量的数据,一般来讲就只能利用全局变量或数组参数。 7-2 变量的存储类型 自动变量(auto) 外部变量(extern) 静态变量(static) 寄存器变量(register) 7-2-1 自动变量(auto) 无论何时,只要一个变量在函数内部被说明,并且没有给出其存储类型,就认为它是自动存储类型变量。一般定义形式为: auto 数据类型 变量名 关键字auto加在变量名及其类型前面,用来说明它是自动变量。 7-2-1 自动变量(auto) 自动变量的作用范围局限于定义它的函数。所以,自动变量是随函数的引用而存在和消失的,从上次调用到下次调用之间不保留值(即释放存储单元),必须在每次进入时要用赋值表达式赋值,否则其值是杂乱无章的。 7-2-2 外部变量(extern) 任何在函数之外定义的变量都叫做外部变量。外部变量存储类型既可以描述一般变量,又能够用来描述函数。函数的存储类型一般都是外部的,因为不可能在一个函数中定义另一个函数。一般定义形式为: extern 数据类型 变量名 关键字extern加在变量名及其类型前面,用来说明它是外部变量。 7-2-3 静态变量(static) 如果希望在函数调用结束后仍然保留函数中定义的局部变量的值,则可以将该局部变量定义为静态变量(或称为局部静态变量)。 一般定义形式为: static 数据类型 变量名 在变量名及其类型之前加上关键字static,该变量的存储类型就是静态的。 静态变量分为内部静态变量和外部静态变量:在函数内部说明的静态变量是内部的,在函数之外说明的静态变量是外部的。 7-2-4 寄存器变量(register) C语言中的寄存器变量通常在对执行速度要求很高的情况下使用。其思想是告诉编译程序把该变量保存在一个CPU寄存器中。因为数据在寄存器中操作比在内存中操作快,这样就提高了程序代码的执行速度。很显然,寄存器变量应用于那些使用频繁的变量(如循环计数器等)。一般定义形式为: register 数据类型 变量名 在变量名及其类型之前加上关键字register,该变量的存储类型就是寄存器变量。 7-3 变量的初始化 自动变量或寄存器变量的初始化 静态变量和外部变量的初始化 自动变量或寄存器变量的初始化 自动变量或寄存器变量可由任意表达式初始化,其实这就是赋值语句的缩写。 先计算表达式的值,然后赋给相应说明的变量。如果没有对自动变量或寄存器变量初始化,那么,它们的值是杂乱无章的,绝不能认为它们的初值是0。 每当控制转入一个函数或分程序内时,都要执行初始化。所以不管何时进入函数或分程序,这些变量的初始状态都是一样的。 特别要注意,在C语言中不允许对自动数组初始化。如果想给一个自动数组赋值,只能反复使用赋值语句,一个一个地把指定值赋给相应元素。 静态变量和外部变量的初始化 对静态变量和外部变量的初始化可采用表达式或初值符表。 对简单类型的变量只能用表达式进行初始化 对构造类型变量的初始化一般采用初值符表 该表由指定的相应类型值构成,以逗号隔开,最外层用一对花括号括起来。 7-4 程序案例 【例】计算1~5的阶乘。 int jf(n) int n; { static int f=1; f=f*n; return(f); } main( ) { int i; for (i=1;i=5;i++) printf(%d!=%d\n,i,jf(i)); } 运行结果为 1!=1 2!=2 3!=6 4!=24 5!=120 接上 每次调用函数,计算出i!,同时保留值,以供求下一个阶乘时使用,这个保留的值其他函数不能使用。如果函数jf中变量f不定义为局部变量,运行结果为: 1!=1 2!=2 3!=3 4!=4 5!=5 7-5 小结 本章主要介绍了变量的作用域和变
您可能关注的文档
- Authorware多媒体制作案例教程-管学理-第九章课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第10章提高多媒体作品开发效率课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第11章作品的调试与发布课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第12章xtra技术与控件的应用课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第13章使用知识对象课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第14章数据库应用课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第1章认识多媒体与Authorware7.0课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第2章文本处理课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第3章图形、图像处理课案.ppt
- Authorware多媒体开发实训教程作者沈洪施明利朱军第4章声音处理课案.ppt
- C语言程序设计-胡宏智-(含例题)第08章课案.ppt
- C语言程序设计实训教程教学课件作者周林ch01C语言概述课件.ppt
- C语言程序设计实训教程教学课件作者周林ch02C语言基础课件.ppt
- C语言程序设计实训教程教学课件作者周林ch03C程序设计初步课件.ppt
- C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt
- C语言程序设计实训教程教学课件作者周林ch05数组课件.ppt
- C语言程序设计实训教程教学课件作者周林ch06函数课件.ppt
- C语言程序设计实训教程教学课件作者周林ch09位运算课件.ppt
- C语言程序设计实训教程教学课件作者周林ch10文件课件.ppt
- C语言程序设计实训教程教学课件作者周林习题参考答案课件.pdf
文档评论(0)