全局变量

✍ dations ◷ 2025-08-18 03:59:52 #全局变量

在程序设计中,全局变量是在所有作用域都可访问的变量,与之对应的是局部变量。

通常,使用不必要的全局变量被认为是坏习惯,这正是由于全局变量的非局部性:全局变量可能被从任何地方修改(除非位于保护内存中),也可能被任何地方所依赖。于是全局变量便拥有了创建相互依存关系的无限可能,而互相依存关系的创建会使得复杂度增加,参见远隔作用(Action at distance)。然而,在少数情况下是适合使用全局变量的。例如,可以通过全局变量的使用来避免常用变量在一系列函数间的频繁传递。

C++语言中全局变量的例子:

#include <cstdio>int global = 3; // 定义全局变量 globalstatic void ChangeGlobal(void){   global = 5; // 从函数中引用全局变量}int main(void){   std::printf("%dn", global); // 还是从函数中引用全局变量   ChangeGlobal();   std::printf("%dn", global);}

因为变量是全局的,所以就没有必要为了在 main 以外的函数中使用而作为参数传递。全局变量属于程序中的所有函数。

输出应该是:

35

全局变量的使用使得软件更加难以阅读和理解。因为程序中任何地方的代码都可能随时修改这个变量的值,于是理解这个变量可能就意味着要理解整个程序的很大部分。

某些语言(比如C#和Java)中没有全局变量。Java 中,所有非局部变量都是类的字段,于是所有变量就都在类和方法的作用域中了。

需要指出的是,C语言不存在真正意义上的“全局变量”。被习惯性误称为“全局变量”的,一般是文件作用域对象。ANSI C/ISO C也没有这种提法。C语言中所谓“全局变量”的例子:

相关

  • 分子克隆分子克隆(英语:Molecular cloning,又译分子纯化繁殖),而克隆英文字面上的意思,其实就是分子克隆,定义是指分离一个已知DNA序列,并以in vivo(活体内)方式获得许多复制品的过程。这一复
  • 阿旖陀石窟坐标:20°33′12″N 75°42′00″E / 20.55333°N 75.70000°E / 20.55333; 75.70000阿旃陀石窟(अजिंठा-वेरूळची लेणी;Ajinṭhā-verūḷacī leṇī)是一个位
  • 海豚科海豚科(学名:Delphinidae)是跟黑猩猩一样聪明的动物,许多杂技表演都有海豚。它还可以创造杂技,模仿人鼓掌的动作等。海豚科是鲸目中人类最了解、最喜爱、最聪明、种类最多的科。
  • 的士数第 n {\displaystyle n} 个的士数(Taxicab number),一般写作 Ta ⁡ ( n
  • 大东亚省大东亚省,是大日本帝国政府在第二次世界大战期间设立的部门。由于日本在第二次世界大战期间的扩张,东条英机提议设立大东亚省,将过去的拓务省、兴亚院、对满事务局、外务省东亚
  • 室利佛逝泰国中部:泰国北部:泰国南部:三佛齐(阿拉伯语:سريفيجايا,爪哇语:ꦯꦿꦶꦮꦶꦗꦪ,?-1397年),中国古籍又称室利佛逝(梵文:श्रीविजय Sri Vijaya)、佛逝、旧港,在阿拉伯文献则
  • 金石篆刻篆刻二字,最初见于扬雄的法言:“童子雕虫篆刻是也。”篆刻有广义与狭义两种解释。狭义的篆刻专指后人所谓的治印之学;广义的篆刻则泛指一切雕琢技法。篆刻也是刻印印章的一种,但
  • 机场管理局机场管理局,是负责管理、监察一个或以上的机场运作的机构。机场管理局可以是一个政府辖下的部门、独立的机构,又或者以商业模式营运的公营事业、民营公司。世界各地设有不少称
  • 廖允杰廖允杰(1986年9月25日-),原名廖俊杰,艺名小杰,台湾男艺人,。原为台湾“黑角舞团”(Black Angle Crew)成员,负责地板舞(Breaking),亦是前Lollipop棒棒堂和JPM成员。为台湾Channel V节目《
  • 绍姆堡-利珀的威廉绍姆堡-利珀的威廉(德语:Wilhelm zu Schaumburg-Lippe,1834年12月12日-1906年4月4日),绍姆堡-利珀亲王格奥尔格·威廉的第三子,母亲是瓦尔德克和皮尔蒙特的伊达。1862年,威廉与安哈尔特-德绍的巴蒂尔迪丝(英语:Princess Bathildis of Anhalt-Dessau)结婚,两人共有4子4女: