千万别问我现在过得好不好,我怕我一张嘴,嘴里冒出的全是孤独的味道!
static
static分两种情况,修饰局部变量和全局变量。
static修饰局部变量
局部变量是存储在栈区的,它的生命周期是整个代码的块,作用域也是整个代码块,一旦出了代码块,存储局部变量的这个栈内存就会被回收,局部变量也就被销毁了。
当我们用static修饰局部变量时,变量被称为静态局部变量,和局部变量、全局变量,静态全局变量一样,是存储在静态存储区,所以这块内存直到程序结束才会销毁。
一个简单的例子:
for循环调用一个函数,该函数内部有一个局部变量number,,初始值为0,每调用一次,number自增1;
如果没有static修饰,打印结果,每次都是1了;如果有static修饰,每调用一次,number在原有基础上都自增1
static修饰全局变量
当全局变量没有使用static修饰符时,其存储在静态存储区,知道程序结束才销毁。也就是其作用域是整个源程序。我们可以使用extern关键字来引用这个全局变量(可以不用引入头文件)
当全局变量用static修饰时,其生命周期没有变,依旧是在程序结束时才销毁。但是其作用域变了,以前是整个源程序,现在只限于申明它的这个文件才可见,即使用extern引用也不行,不然会报错。
网友评论