全局变量

✍ dations ◷ 2025-11-11 12:49:08 #全局变量

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

通常,使用不必要的全局变量被认为是坏习惯,这正是由于全局变量的非局部性:全局变量可能被从任何地方修改(除非位于保护内存中),也可能被任何地方所依赖。于是全局变量便拥有了创建相互依存关系的无限可能,而互相依存关系的创建会使得复杂度增加,参见远隔作用(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语言中所谓“全局变量”的例子:

相关

  • 多元论多元或多元主义(英语:pluralism)在社会科学和政治哲学中,指不同种族、民族、宗教或社会群体在一个共同文明体或共同社会的框架下,持续并自主地参与及发展自有传统文化或利益并且
  • 苏联最高苏维埃苏联主题苏维埃社会主义共和国联盟最高苏维埃(俄语:Верховный Совет Союза Советских Социалистических Республик),简
  • 希腊的玛丽亚公主玛丽亚公主(希腊语:,1876年3月3日-1940年12月14日),希腊人的国王乔治一世的次女。玛丽亚与兄弟姐妹们从小由英国保母抚养长大。乔治一世经常灌输他们对希腊的热爱,因此玛丽亚不希望
  • 江南园林志《江南园林志》是一部由中国建筑学家童寯撰写的书籍,介绍了(苏州)、杭(杭州)、沪(上海)、宁(南京)一带的中国古典园林。童寯在抗日战争前访问了大量的江南著名园林,进行实地考察和测绘
  • 周显欣周显欣(1982年-),汉族,中国演员,因外表酷似“巩俐”而走红,因电影《高考1977》而获得中国第13届华表奖优秀故事片奖、第五届中美电影节金天使奖而受关注。
  • 塞思·麦克法兰作品列表塞思·麦克法兰是一名美国男演员、动画师、编剧、监制、导演、喜剧演员和歌手。麦克法兰早期的职业生涯是从汉纳巴伯拉动画开始,他在汉纳巴伯拉中参与数部电视动画的制作,包括
  • 匈牙利自动望远镜网络计划匈牙利自动望远镜网络(Hungarian Automated Telescope Network,HATNet)是一个由6架小型全自动化望远镜组成的网络。匈牙利自动望远镜网络计划(HATNet Project)即依赖该网络得以实施,其科学目标是使用凌星观测法探测系外行星。该网络也被用于寻找和追逐明亮的变星。目前,哈佛-史密松天体物理中心负责维护该网络。该网络的英文名简写HAT即表示“匈牙利自动望远镜”(Hungarian-made Automated Telescope),因为该网络最初是由一群匈牙利科学
  • 伏尔夫湖欧白鱼伏尔夫湖欧白鱼(学名:)为辐鳍鱼纲鲤形目雅罗鱼科欧白鱼属的其中一种,被IUCN列为濒危保育类动物,分布于欧洲希腊沃尔维湖和科罗尼亚湖流域,体长可达30公分,栖息在湖泊底中层水域,生活习性不明。
  • 裴光庭裴光庭(676年-733年3月27日),字连城,绛州闻喜(今山西闻喜东北)人。裴行俭之子。幼年丧父,母库狄氏被武则天召为御正,极受宠信。裴光庭被提拔至太常丞。因为是武三思女婿,一度受牵累贬官郢州。开元中,擢兵部郎中。开元十七年,任中书侍郎、同中书门下平章事。与萧嵩争权不协。开元二十年授光禄大夫,封正平县男。开元二十一年卒。谥忠献。张九龄撰《裴光庭碑》。
  • 威廉一世 (奥兰治亲王)奥兰治亲王威廉一世(荷兰语:Willem I,也称沉默者威廉(荷兰语:Willem de Zwijger)、奥兰治的威廉(荷兰语:Willem van Oranje),1533年4月24日-1584年7月10日)奥兰治亲王威廉一世是尼德兰革命中反抗西班牙哈布斯堡王朝统治的主要领导者、八十年战争领导人之一。曾任荷兰共和国第一任执政。原为奥兰治亲王(荷兰语:Prins van Oranje);1565年组织“贵族同盟”,反对哈布斯堡王朝的西班牙国王腓力二世对西属尼德兰的统治;后来逃亡德意志,招募佣兵,多次反攻