static关键字作用
C语言中:
static的用法有两种:
1.修饰全局变量 或 函数,用于限定该变量或函数作用域为本文件。(这种限定是针对编译器而言,运行时没有区别)
2.修饰局部变量,用于修改变量的生存周期,维持持久性。
1.修饰变量时,只执行一次初始化,且延长了局部变量的生命周期,程序运行结束之后释放内存。
2.修饰全局变量时,变量只能在所在文件中调用,即使使用extern声明也无法在其他文件中访问。
3.修饰函数时,该函数只能在本文件中调用。
static修饰变量均存放在全局数据区的静态变量区,包括静态局部变量区和静态全局变量。初始化时自动初始化为0 。
静态局部变量的生存周期贯穿整个程序与奴性时间,但是作用域还是函数内。
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
(1)静态局部变量和全局变量生命周期为整个源程序的周期,而动态的局部变量为函数的生存周期;
(2)静态的全局变量作用范围在该源文件中,非静态的全局变量在的源程序中(包含多个源文件);
4.不想被释放的时候可以用static。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用 static 修饰。
5.考虑到数据安全性(当程序想要使用全局变量的时候应该先考虑使用 static)