第12章 函数中的变量.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
变量的存储类别 register变量 :变量的值会被要求直接存储在寄存器中。访问该变量无须从内存中获取它的值,存储该变量时也无须再存回内存,都可以直接在寄存器上进行操作。由于寄存器的存取速度要远快于内存的存取数度,因此,如果一个该变量在程序中被频繁使用,那么将其声明为register变量,将大大提高程序的执行效率。 关键字extern用于声明全局变量,其可以扩展全局变量的作用域。在12.3.2节中已介绍了该关键字的使用形式,并讨论了若要在变量定义前使用变量时,可以借助extern来进行声明。在这种情况下,extern的作用是在一个文件中扩展全局变量的作用域。 1.【考题】全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 【解析】可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错。 2. 【考题】写出下面函数的输出结果。 int v = 3; void func(void) { int v = 2; printf(%d\n, v); } 1-* 第12章 函数中的变量 杨章伟 e-mail:yang505412@163.com 课程内容安排 生存期和作用域 局部变量和全局变量 变量的存储类别 小结 习题 生存期和作用域 C程序中的所有变量都有一定的生存期和作用域。生存期是指程序运行时,变量占有内存的时间。变量作用域是指在程序中,变量可以被使用的有效代码区域。 由于生存期和作用域的影响更加凸显,使变量在函数中的使用显得复杂多变。其中,局部变量和全局变量的概念尤为重要,理解两者的区别是使用函数进行编程的基础。同时,C语言还定义了变量的多种存储类别,以帮助程序员实现更为强大的功能。这些存储类别包括auto变量、static变量、register变量和extern变量等,其中,static变量还可分为static局部变量和static全局变量。 变量的生存期 生存期是指程序运行时变量占有内存的整个时期。当程序运行到变量的定义语句时,编译器为其分配内存,这是它的生存期的开始;当变量占用的内存被释放时,则标志着生存期的结束。 提示:当变量在某一时刻有值时,即可认为该变量在那个时刻是有效的,那个时刻即属于变量的生存期。 变量的作用域 作用域是指变量可以被使用的代码区域。只有在变量的有效作用域内,变量才是可以被访问的。在变量作用域之外使用变量是非法操作,编译器会对这种行为报告错误。变量可以在main函数内定义,可以在自定义的函数内定义(包括形参),也可以定义在所有函数的外部,还可以在各个函数内部的复合语句中定义。不同位置定义的变量,其作用域是不一样的。 变量作用域的大小由它所在的程序块决定。如前所述,程序块就是复合函数,也就是在C语言中使用花括号对({})分隔出来的代码块。 【范例12-2】变量作用域的演示 局部变量和全局变量 在C语言中,根据变量的作用域,可以将变量分为局部变量和全局变量两种。 局部变量,是指作用域无法涵盖整个代码区的变量。在C语言中,函数体中定义的变量,即函数的内部变量也是局部变量之一。局部变量的作用域不能超过所属的函数体 。 与局部变量相对应的,在所有函数外部定义的变量,即所有函数的外部变量,则被称为“全局变量”。实际上,整个C程序可以视为一个程序块,而且是其余所有程序块的上层程序块,而全局变量就是在这个程序块中定义的。因此,全局变量在整个C程序中都是有效的了,作用域为从被定义开始直到整个C程序结束。 变量的存储类别 C语言中的变量都有两个属性:数据类型和存储类别。数据类型在第2章已经详细讨论过,本节将讨论变量的存储类别。C语言中定义了4个关键字作为变量的存储类别的修饰词,分别为:auto、static、register和extern。变量的存储类别决定了变量在内存中的存储区域。 存储类别auto的作用是声明变量的生存期为自动型,auto变量的内存由编译器自动从栈上分配,因此,auto变量是临时变量。 储存类型static的作用是将变量声明为static型,即静止型,该类别变量的内存均从静止存储区分配,生存期为整个程序的执行过程。 小结 本章主要学习了函数中变量使用的相关知识。首先,介绍了生存期和作用域的概念,其次,讨论了局部变量和全局变量的区别和使用,然后,依次深入讨论了C语言中变量的各种存储类别,包括auto变量、statiic变量、register变量和extern变量。 常见面试题 3.【考题】写出下面程序段的执行结果。 void fun1( int v ) { static int value =

文档评论(0)

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

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

1亿VIP精品文档

相关文档