static 变量及其作用
基本要点:
- static 关键字可以修饰变量,可以修饰函数
- 静态变量的存储方式与全局变量一样,都是静态存储方式 (静态存储方式:指在程序运行期间分配固定的存储空间的方式)
- 静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量,例如全局变量。
隐藏与隔离的作用
- 希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,可以通过在全局变量之前加上关键字 static 来实现,使全局变量被定义成为一个静态全局变量 (源文件指什么,不太清楚,有人解释一下吗?是当前 c 文件?)
保持变量内容的持久性
- 如果希望局部变量的值在函数调用结束之后不会消失,而仍然保留其原值。即它所占用的存储单元不释放,在下一次调用该函数时,其局部变量的值仍然存在(也就是上一次函数调用结束时的值)
- 则将该局部变量用关键字 static 声明为静态局部变量
- 这将改变局部变量的存储位置,即从原来在栈中存放改为在静态存储区存放
- 静态局部变量与全局变量的主要区别就在于可见性,静态局部变量只在其被声明的代码块中是可见的
默认初始化为 0:
- 静态数据区(静态存储区) 所有的字节默认值都是 0x00(未初始化的情况下)
- 静态变量与全局变量一样,都存储在静态数据区中,因此它们的默认值都为 0