解析全局变量和局部变量在程序设计中的效应

来源 :China’s foreign Trade·下半月 | 被引量 : 0次 | 上传用户:gxfcs
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】 全局变量不受作用域的影响,问题可以使用的(也就是说,全局变量的生命期一直到程序的结束)。局部变量出现在一个作用域内,它们是局限于一个函数的。
  【关键词】 局部变量 全局变量
  全局变量是在所有函数体的外部定义的,程序的所在部分(甚至其它文件中的代码)都可以使用。全局变量不受作用域的影响,问题可以使用的(也就是说,全局变量的生命期一直到程序的结束)。如果在一个文件中使用extern关键字来声明另一个文件中存在的全局变量,那么这个文件可以使用这个数据。局部变量出现在一个作用域内,它们是局限于一个函数的。局部变量经常被称为自动变量,因为它们在进入作用域时自动生成,离开作用域时自动消失。关键字auto可以显式地说明这个问题,但是局部变量默认为auto,所以没有必要声明为auto。
  关键字static有一些独特的意义。通常,函数中定义局部变量在函数中作用域结束时消失。当再次调用这个函数时,会重新创建变量的存儲空间,其值会被重新初始化。如果想使局部变量的值在程序的整个生命期里仍然存在,我们可以定义函数的局部变量为static(静态的),并给它一个初始化。初始化只在函数第一次调用时执行,函数调用之间变量的值保持不变,这种方式,函数可以“记住”函数调用之间的一些信息片断。我们可能奇怪为什么不使用全局变量。static变量的优点是在函数范围之外它是不可用的,所以它不可能被轻易改变。这会使错误局部化。外部变量extern告诉编译器存在着一个变量和函数,即使编译器在当前的文件中没有看到它。这个变量或函数可能在一个文件或者在当前文件的后面定义。例如extern int i;编译器会知道i肯定作为全局变量存在于某处。当编译器看到变量i的定义时,并没有看到别的声明,所以知道它在文件的前面已经找到了同样声明的i 。
  当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.
  为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。
  如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上 static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
  存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和 全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。虽然这种用法不常见,按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。按作用域分, 全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
  全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
  从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。static 函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件static全局变量与普通的全局变量有什么区别:static全局变量只初始化一次,防止在其他文件单元中被引用;static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
  参考文献:
  [1]《C语言程序设计》 清华大学出版社2004年第一版.
  (作者单位: 大庆职业学院计算机系)
其他文献
【摘要】 职工薪酬包括工资奖金津贴、职工福利费、各类社会保险费用、住房公积金、工会经费、职工教育经费、未参加社会统筹的退休人员退休金和医疗费用以及辞退福利、带薪休假等其他与薪酬相关的支出。文章分析职工薪酬核算范围与构成,分析了新旧制度下职工薪酬核算的主要差异。  【关键词】 职工薪酬 核算 企业会计准则 企业会计制度  2006年2月15日,财政部发布了包括1项基本准则和38项具体准则在内的新的一
期刊
【摘要】 人力资源管理对于知识性密集型的医疗机构,其正常的工作运营起着重要的积极作用,可以合理优化资源配置,调动人员的工作积极性,提高医院的经济效益,促进医院良性发展。因此,医院发展的核心基础就是建立完善的人力资管理体系。  【关键词】 医院 人力资源管理 制定体系  引言:  随着我国经济的飞速发展,竞争变得尤为激烈,当今各行各业的竞争,追根究底就是人力资本的竞争。人力资本为医院创造社会价值和经
期刊
【摘要】 随着经济的飞速发展,竞争变得尤为激烈,当今各行各业的竞争,追根究底就是人力资本的竞争。人力资本成为企业创造社会价值和经济效益的基本生产要素。谁拥有高效的人力资源管理,就能够取得快速的发展,在激烈的竞争中站稳脚跟。因此,人力资源管理研究根据企业快速发展的要求,要对目前管理的现状做进一步的分析研究,做出合理调整,从而适应新形式的发展要求。  【关键词】 人力资源 理论研究 现状分析  引言:
期刊
脱粒机的种类和形式很多,按其适应作物的情况可分为通用脱粒机和专用脱粒机;按作物的喂入方法可分为全喂入式和半喂入式;按其结构及完成工作的情况可分为简易式、半复式和复式3种方式。简易式的脱粒机结构简单,仅有脱粒装置,只能将谷粒脱下,不能进行分离和清选。半复式脱粒机结构比较复杂,除具有脱粒装置外,还有简单的分离装置和清选装置,可进行初步的分离和清选。复式脱粒机除具有完善的脱粒、分离、清选装置,除脱粒和分
期刊
企业的发展靠人,团队的素质决定企业的命运。实施人才的战略是企业发展的关键性的,是提升员工技术、能力、水平的有效途径,同时也是建设学习型组织的最佳手段。随着社会的发展,企业面临的商业竞争日益激烈,通过实施人才的战略,对进一步提高企业的竞争力就显得尤为重要。高度重视营销实施人才的战略对企业的发展具有全局性、战略性的重要意义。就如何加强营销人才队伍建设,实施人才战略,略谈粗浅认识。  1. 树立科学的人
期刊
【摘要】 公路建设是促进经济发展的保证,但由于公路施工本身所特有的性质,公路施工项目对所在区域环境影响很大。因此,治理公路环境污染,最大限度地消除公路负面影响尤为重要。本文通过分析公路环境保护的内容,针对公路施工对环境污染的现象提出防治措施,以期通过本文的阐述充分认识在建工程对所在地区环境造成的危害,尽量减轻施工对环境的影响,促进工程建设与环境保护的和谐发展。  【关键词】 公路 环境保护 环境污
期刊
【摘要】 阐述企业通过激励,激发人的动机;针对不同企业和岗位,论述拟定和设计动机激励的方案,有效支撑企业经营,避免人才瓶颈问题,强化和夯实管理基础。让员工感到与企业共同发展,让顾客感到与我们共同发展,让人的智慧在企业发展中获取承认。  【关键词】 激励 企业  当今,市场经济不容忍平均主义,存在就会导致企业人才流失,造成人才瓶颈的可怕局面。那么,如何激励员工,保持持久的工作热情和创造性呢?笔者认为
期刊
【摘要】 在我国交通事业尤其是高速公路和高速铁路蓬勃发展的背景下,许许多多施工难度大、技术复杂、科技含量高的桥梁正在建设过程中或已经建成,桥梁技术中的加固措施与质量措施已经成为了桥梁工程中备受关注的课题。本文从桥梁工程的加固与养护等方面对桥梁施工技术与管理的加强进行了浅要的分析和思考。  【关键词】 桥梁 施工技术 施工管理  引言  随着我国经济的飞速发展,公路、铁路桥梁的建设也发生着日新月异的
期刊
1. 选地  玉米根系发达,适应性也强,它对土壤种类的要求不严格,但是玉米植株高大、根系多,它要从土壤中吸取大量的水分和养分,所以一般我们都要选择地势较平坦,土层深厚,质地疏松,通透性好,肥力中等以上,保水,保肥力较好的地块,才能获得较高的产量。  2. 选良种  现在我们所种植的玉米种子都是杂交种子,通俗的说法就是一年种(不能留种),主要是利用它的杂种优势,来提高玉米的产量、品质以及它的抗病性和
期刊
【摘要】 本文阐述了挤塑聚苯乙烯保温板(XPS)基本概念和基本特征。对其在建筑体系中的应用及前景进行了描述,阐明了挤塑聚苯乙烯保温板(XPS)作为新型环保节能保温材料,在材料性能,施工应用等方面都具有广阔的发展前景。  【关键词】 XPS挤塑泡沫板 建筑节能 应用 前景  前言  随着社会的进步和发展,环境能源和健康等问题逐渐凸现在人们的眼前,建筑节能已成为今后建筑发展的要求和方向,墙体材料节能是
期刊