static int
和 int
之间有以下区别:
- 存储位置:
int
声明的变量是自动存储期的,它们在函数执行时被创建,在函数结束时被销毁。而static int
声明的变量是静态存储期的,它们在程序的整个执行过程中都存在,只会初始化一次。 - 生命周期:
int
声明的变量的生命周期仅限于其所在的作用域(通常是函数内部),当离开作用域时就会被销毁。而static int
声明的变量的生命周期跨越了整个程序执行过程,它们在内存中保持不变。 - 可见性:
int
声明的变量只能在其所在的作用域内访问,对其他函数或代码块是不可见的。而static int
声明的变量具有文件作用域,可以在声明该变量的源文件中的任何地方访问,但对其他源文件是不可见的。 - 初始值:
int
声明的变量在未显式初始化时,其值是不确定的(即为垃圾值)。而static int
声明的变量在未显式初始化时,会被自动初始化为0。
总结来说,static int
和 int
的主要区别在于存储位置、生命周期和可见性。static int
声明的变量在整个程序执行过程中都存在,具有文件作用域,且会被自动初始化为0;而 int
声明的变量仅在其所在的作用域内存在,对其他代码块或函数不可见,且未显式初始化时其值是不确定的。