静态变量通常是:(在大多数编程语言中)共享的、持久的,并且分配在程序的代码段上。
但是这与单词“static”有什么关系呢?这有什么是静态的吗?我以为static
表示不会改变?
例如,在vb.net中,静态被写成shared,这意味着一个成员函数可以在没有实例化对象的情况下访问。在函数内部的static通常意味着变量的生命周期是整个程序的生命周期。看起来静态变量存储在计算机的代码段中。根据这个例子,我的理解是正确的吗?
静态变量通常是:(在大多数编程语言中)共享的、持久的,并且分配在程序的代码段上。
但是这与单词“static”有什么关系呢?这有什么是静态的吗?我以为static
表示不会改变?
例如,在vb.net中,静态被写成shared,这意味着一个成员函数可以在没有实例化对象的情况下访问。在函数内部的static通常意味着变量的生命周期是整个程序的生命周期。看起来静态变量存储在计算机的代码段中。根据这个例子,我的理解是正确的吗?
我认为“static”这个关键字很合适。它意味着您声明为静态的变量将在整个程序执行过程中保持存储在相同位置。
我以为static意味着不改变
这对应于“const”关键字。“const”表示它不会改变,“static”表示它不会“移动”,即始终存储在相同位置。
在编程语言中,静态变量的生死不由变化决定。静态变量始终存活着,它们只有一个实例,要么在程序开始时生成,要么在第一次可见时生成,并持续到程序结束。非静态变量会随着块的进入和退出或类实例的创建和销毁而出现和消失。
在C++中,为了与C兼容,当应用于命名空间作用域的变量时,static具有完全不同的含义:它表示变量具有内部链接而不是外部链接,并且在其他翻译单元中不可见。早期C语言为什么采用static这个词汇,我不知道;我只能猜测他们需要某些东西,但不想引入一个新的关键字。(最初,在最早版本的C语言中,文件范围内的变量遵循Fortran命名的公共块规则:相同名称的所有变量都指向相同的存储。)回顾过去,在 20/20的视觉效果下,默认情况下,文件范围内的变量应具有内部链接,并使用特殊关键字(public?)表示变量具有外部链接。但这在1970年代初显然不太明显。
静态变量是指变量存储。在函数调用内,您声明的每个变量都会被推送到堆栈上。与其他变量不同,静态变量不会被推送到堆栈上,它类似于全局变量,可以在整个程序执行期间存活,但只能在声明块内部可见。
我认为你只需学习计算机科学中“静态(static)”的含义,而不将其与口语英语相关联,特别是在变量和函数方面,它们在C语言中有稍微不同的结果。
从http://dictionary.reference.com/browse/static?s=t中可以得知,static的定义为:
静态变量是一种即使超出作用域也会保持其状态的变量,与非静态变量相反,后者每次重新进入作用域都会重新初始化 - 因此可以理解为具有“固定状态”或表现出“无变化”。