static关键字
1.static修饰局部变量:静态局部变量2.static修饰全局变量:静态全局变量3.static修饰函数:静态函数1.static修饰局部变量:静态局部变量
概念:static修饰局部变量就使之成为静态局部变量
初始化:静态局部变量的初始化只会在第一次进入这个函数时做,当离开函数的时候,静态局部变量会继续存在并保持其值,以后进入函数时会保持上次离开时的值。
作用域:静态局部变量的作用域并未发生变化,在其所在的局部范围,也就是其所定义的代码块内部。
生存期:静态局部变量实际上是特殊的全局变量,它们位于相同的内存区域,内存分为栈区,堆区,静态存储区,静态局部变量和全局变量都位于静态存储区,因此静态局部变量的生存期与全局变量一样,随程序启动而生,随程序结束而消亡。
由此可见,static修饰局部变量只是改变了变量的生命周期,让静态局部变量出了作用域依然存在,随程序启动而生,随程序结束而消亡。
2.static修饰全局变量:静态全局变量
全局变量的作用域是整个工程,也就是说全局变量可以在整个项目中的任意的一个源文件被使用,这是因为全局变量具有外部连接属性,当一个全局变量被static所修饰的时候,这个全局变量的外部连接属性就变成了内部连接属性,即成为了静态全局变量,使得这个静态全局变量只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。
3.static修饰函数:静态函数
函数也是具有外部连接属性的,当某个编译单元需要使用其他编译单元中的函数,只需要声明该函数,然后就可以使用,当一个函数被static所修饰的时候,这个函数的外部连接属性就变成了内部连接属性,也就成为了静态函数,使得这个静态函数只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现连接性错误。