静态变量

✍ dations ◷ 2025-11-26 20:03:40 #计算机编程,计算机科学,程序架构

静态变量(英语:Static Variable)在计算机编程领域指在程序执行前系统就为之静态分配(英语:Static memory allocation)(也即在运行时中不再改变分配情况)存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量(即局部变量)与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。

“静态变量”这一术语有两个容易混淆的定义:

而在以Pascal为代表的许多程序语言中,所有局部变量都由系统自动分配存储空间,而所有全局变量的存储空间则以静态分配的方式获取(对应“静态变量”),因此由于实际上“局部变量”和“全局变量”这两个术语已足以涵盖所有的情况,在这些程序语言中通常不使用“静态变量”这一术语,而直接以“全局变量”代之。一般来说,在这些程序语言中,静态变量就是全局变量,而即使在有明确区分全局和静态变量的程序语言中,在编译后的代码里二者也以相同的方式获取存储空间。而今术语“静态变量”的概念则主要基于C族语言的“static”的定义(即定义2)。

静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。

在C语言及由其派生出的C++与Objective-C等程序语言中,“static”是用于控制变量的生命周期和连接方式(即其作用域,亦即可见性)的保留字。确切来说,正如C族语言中的extern,auto与register这些保留字一样,static也是一种存储类(此处的“类”与面向对象语言的“类”的定义不同)标识。每个变量与函数都有以上的一种存储类标识,如果在声明(英语:Declaration (computer programming))中没有明确标识其存储类,编译时就会根据上下文来选择其默认存储类,如在源文件里的所有文件级变量对应的默认存储类是extern,而在函数体内的变量对应的则是auto,各存储类的属性如下表所列。

易见存储类为extern的变量(包括上面提到的未明确声明存储类的文件级变量)符合前段所述静态变量的定义1,但不符合定义2。

除明确标识出变量的生命周期(英语:Object lifetime)外,将变量声明为static存储类还会根据变量属性不同而有一些特殊的作用:

在C语言中,带有静态变量的程序如下所示:

#include <stdio.h>void func() {	static int x = 0; // 在对func的三次调用中,x只进行一次初始化	printf("%d\n", x); // 输出x的值	x = x + 1;}int main(int argc, char * const argv) {	func(); // 输出0	func(); // 输出1	func(); // 输出2	return 0;}

C++示例

在C++中,带有含私有静态内部变量的类的程序如下所示:

相关

  • 胂凡纳明洒尔佛散(德语:Salvarsan),也称作砷凡纳明或胂凡纳明(英语:Arsphenamine)或606,是第一种有效治疗梅毒的有机砷化合物,又用于治疗昏睡病,还是第一种现代化疗药物,1910年代初投入应用。19
  • 奈姆蒂姆萨夫二世奈姆蒂姆萨夫二世(英语:Merenre Nemtyemsaf II)(或译为麦伦拉二世、莫润尔二世),古埃及古王国时期第六王朝的国王,作为儿子继承了父亲佩皮二世的王位。在位短暂,登基几个月后即为诸
  • 圣徒圣徒本意指圣人的门徒或者圣人思想的追随者,如李东阳《金陵问》:“程夫子,真圣徒。”“圣徒”一词在近代也成为其它宗教的借用译词,也通常指具有特别美德或者修行水平很高的教徒
  • 圆锥圆锥也称为圆锥体,是一种三维几何体,是平面上一个圆以及它的所有切线和平面外的一个定点确定的平面围成的形体。圆形被称为圆锥的底面,平面外的定点称为圆锥的顶点或尖端,顶点到
  • 恰蒂斯加尔邦恰蒂斯加尔邦(恰蒂斯加尔语/印地语:छत्तीसगढ़,拉丁字母转写:Chattisgarh)是位于印度中部的一个行政邦,它于2000年11月1日从中央邦脱离,成为印度的第26个邦,全国第十大邦,首府
  • 公共安全公共安全是指保护个人、财产、物品不受到灾害或事故等危险的威胁。在不同的社会制度下,对公共安全的认识和评价也不相同。公共安全大致可以分为自然安全;地震、海啸等;人为安全
  • 潘予潘予(1924年10月28日-2015年1月11日),出生于浙江杭州,中国电影表演艺术家。1998年凭借电影《安居》获得第4届中国电影华表奖优秀女演员。1993 奚美娟2001 奚美娟、谢 兰2013 章
  • 密西西比河三角洲密西西比河三角洲(Mississippi River Delta)是一个在全新世形成的、通过密西西比河在注入墨西哥湾时沉积造成的三角洲。在过去5000年中这个沉积过程使得南路易斯安那州的海岸
  • 切罗基人316,049在编部落成员 (东方部落:13,000+、切罗基国:288,749、给杜瓦联合部落:14,300) 的成员就被描述为擅长猎鹿,来自的成员则是擅长操作与爱情相关的魔法。经济上,有称为的经济
  • 15号线15号线可以指: