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

时间:2013-02-15 10:37:02

标签: c++ objective-c vb.net static

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

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

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

7 个答案:

答案 0 :(得分:17)

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

  

我认为静态意味着不会改变

这对应于const关键字。 Const意味着它不会改变,静态意味着它不会“移动”,因为它会保存在同一个位置。

答案 1 :(得分:8)

一般来说,什么不会随着静态的东西而改变 编程语言是否存在。静态的 变量总是活着的;他们有一个单一的实例 在程序开始时或者在程序开始时出现 第一次看到它们,并持续到结束 程序。非静态变量来来去去,就像块一样 输入和离开,或者创建类实例 销毁。

在C ++中,出于C兼容性的原因,静态,应用时 命名空间范围内的变量,有一个完全不相关的 意思是:它意味着变量有内部,而不是 外部链接,在其他翻译单元中不可见。 为什么在早期C中采用静态这个词,我不这样做 知道;我只能猜测他们需要什么,但没有 想要引入一个新的关键字。 (原来,在 最早的C版本,文件范围内的变量遵守规则 名为common block的Fortran:所有同名变量 提到相同的存储。)回头看,当然(20/20 后见之明),文件范围内变量的默认值应该是 是内部链接,有一个特殊的关键字(public?)来说 变量有外部联系。但这要少得多 在1970年代早期很明显。

答案 2 :(得分:3)

静态是指变量存储。在函数调用中,您声明的每个变量都被压入堆栈。与其他变量不同,静态变量不会被压入堆栈,它就像一个全局变量,在程序的整个执行过程中幸存下来,只有在块内部才能看到差异。

答案 3 :(得分:1)

我认为你只需要学习计算机科学中“静态”的含义,而不是将其与英语口语联系起来。特别是因为它适用于变量和函数,在C中的结果略有不同。

答案 4 :(得分:1)

http://dictionary.reference.com/browse/static?s=t

中单词的定义
  1. 属于或以固定或静止状态为特征的。
  2. 显示很少或没有变化:静态概念;静态的关系。
  3. 静态变量即使在超出范围之后也会保持其状态,而不是每次返回到范围时都会重新初始化的非静态变量 - 因此可以考虑使用静态变量。 “静止状态”或展示“无变化”

答案 5 :(得分:1)

如果你可以避免它,那就不要进入C ++静态版。在任何现代语言中,静态只意味着只有一个实例并且它永远不会被破坏。这与英语含义相距不太远,并且很好地讨论了const / final / readonly以及这意味着什么。

答案 6 :(得分:1)

静态变量意味着,即使您创建了该类的多个实例,也只有该变量的一个副本。也就是说,指定类的所有对象都使用相同的内存位置。或者如果您想要一个示例,例如,我们有两个线程。在第一个线程中你创建一个进度条,在第二个线程你需要更新它。在这种情况下,你可以在进度条的类中定义一个静态变量来存储进度并创建一个类的实例在每个thread.One线程中进行初始化,在另一个线程中更改静态变量的值。因为两者都使用相同的副本,所以进度将在第一个线程中可用。 因此静态意味着在创建新实例时不改变其位置的东西。或者我们可以说保留其状态的东西;)Blah blah blah blah