简而言之:
static声明静态全局变量和静态函数时,
生命周期:延续至整个程序执行完毕。
作用域:仅限于声明它们的源文件(.c 文件)。其他源文件即使包含了声明这些变量或函数的头文件,也无法直接访问这些变量或函数。
static声明局部变量时,
生命周期:会延续至整个程序执行完毕
作用域:只限于声明static的函数内部使用,其它函数都不能用。
static变量的生命周期
①图中右边代码区的【static变量b】和【全局变量a】一样,存在初始化静态区中,不会和一般的变量存在栈中,所以不会随 函数metod执行完毕(出栈) 而消失。
②所以【static变量】和 【全局变量】的生命周期是一样的,永久存在,直到整个程序执行完毕。
区别
【static变量b】只能在函数metod中使用,
而【全局变量a】可以在程序中所有地方使用。