一、static是什么?
static是C/C++中的修饰符,可以用来修饰变量,也可以用来修饰函数。
二、static的好处是什么?
1、隐藏变量或函数、隔离错误,有利于模块化程序
在编程中,难免会用到全局变量,全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,全局变量在所有的源文件中都是有效的。如果希望全局变量仅限于在本源文件中使用,在其他源文件中不能引用,也就是说限制其作用域只在定义该变量的源文件内有效,而在同一源程序的其他源文件中不能使用,这时,就可以通过在全局变量上加static来实现,使全局变量被定义成一个静态全局变量。这样就可以避免其他源文件使用该变量、避免其他源文件因为该变量引起的错误。起到了对其他源文件隐藏该变量和隔离错误的作用,有利于模块化程序。
2、保持变量内容的持久性
有时候,我们希望函数中局部变量的值在函数调用结束之后不会消失,仍然保留函数调用结束的值。即它所在的存储单元不释放。这时,应该将该局部变量用关关键字static声明为静态局部变量。当局部变量被声明为静态局部变量的时候,也就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区存放,全局变量也存放在静态存储区,静态局部变量与全局变量的主要区别就在于可见性,静态局部变量只在其被声明的代码块中是可见的。
三、static的使用和作用
1、静态全局变量
使用:全局变量前加static,修饰全局变量为静态全局变量。
作用:改变全局变量的可见性。静态全局变量的存储位置在静态存储区,未被初始化的静态全局变量会被自动初始化为0。静态全局变量在声明它的文件之外是不可见的,仅在从定义该变量的开始位置到文件结尾可见。
2、静态局部变量
使用:局部变量前加static,修饰局部变量为静态局部变量。
作用:改变局部变量的销毁时期。静态局部变量的作用域和局部变量的作用域一样,当定义它的函数或语句块结束的时候,作用域结束。不同的是,静态局部变量存储在静态存储区,当静态局部变量离开作用域后,并没有被销毁。当该函数再次被调用的时候,该变量的值为上次函数调用结束时的值。
3、静态函数
使用:函数返回类型前加static,修饰函数为静态函数。
作用:改变函数的可见性。函数的定义和声明在默认情况下都是extern的,但静态函数只在声明它的文件中可见,不能被其他文件使用。
4、类的静态成员
使用:类成员前加static,修饰类的成员为类的静态成员。
作用:实现多个对象之间的数据共享,并且使用静态成员不会破坏封装性,也保证了安全性。
5、类的静态函数
使用:类函数前加static,修饰类的函数为静态函数。
作用:减少资源消耗,不需要实例化就可以使用。
标签:
c语言
本文转载自: https://blog.csdn.net/impossble_2017/article/details/116772612
版权归原作者 李江林 所有, 如有侵权,请联系我们删除。
版权归原作者 李江林 所有, 如有侵权,请联系我们删除。