对于各种编程语言和环境,静态变量通常意味着什么?

use*_*951 5 c++ vb.net static objective-c

静态变量通常是:(在大多数编程语言中)共享,持久和分配在程序的代码部分

但这与静态这个词有什么关系呢?那是什么静止的?我以为static手段不会改变?

例如,在vb.net中,static是共享的,这意味着可以在没有对象实例化的情况下访问的成员函数.函数内的静态通常意味着可变寿命是整个程序的生命周期.似乎静态变量存储在计算机的代码部分.基于这个例子,我的理解是否正确?

JBL*_*JBL 17

好吧,我认为关键字是合适的.这意味着您声明为static的变量将在整个程序执行期间保持存储在同一位置.

我认为静态手段不会改变

这对应于const关键字.Const意味着它不会改变,静态意味着它不会"移动",因为它保持存储在同一位置.

  • 只要变量存在,变量的任何实例都将存储在同一位置.静态背后的关键含义是变量没有进出. (3认同)

Jam*_*nze 8

一般来说,编程语言中静态的东西不会改变的是它是否存在.静态变量总是存活的; 它们有一个实例,它可以在程序开始时或第一次可见时生成,并持续到程序结束.非静态变量来来去去,因为输入和离开了块,或者创建和销毁了类实例.

在C++中,出于C兼容性的原因,静态在应用于命名空间范围的变量时,具有完全不相关的含义:它表示变量具有内部链接,而不是外部链接,并且在其他转换单元中不可见.为什么在早期C中采用静态这个词,我不知道; 我只能猜测他们需要什么,并且不想引入新的关键字.(最初,在最早的C版本中,文件范围内的变量遵循Fortran命名的公共块的规则:所有同名的变量都指向相同的存储.)回头看,当然(20/20后见之明) ,文件范围变量的默认值应该是内部链接,使用特殊关键字(public?)表示变量具有外部链接.但在1970年代早期,这一点并不那么明显.