1.静态局部变量
static局部变量的作用域也是在定义的函数内有效,但其生命周期和程序运行周期一致,static局部变量的值只初始化一次,但可多次赋值,若未初始化,数值型变量自动赋值为0,字符型变量赋值为空字符‘\0’。
void fun()
{
static int a;
cout<<a<<endl;//静态局部变量,没有赋值,系统赋初值为0,且只初始化一次
}
void fun2()
{
static int b=1;
++b;
cout<<b<<endl;//
}
int main()
{
fun();//输出0
fun2();//输出2
fun2();//输出3
return 0;
}
2.static全局变量
在函数外定义,作用范围被限制在所定义的文件中,不同文件静态全局变量可以重名,但作用域不冲突,static全局变量的声明周期和程序运行周期一样,其值只初始化一次。
用static修饰的全局变量和函数,其作用域只在本文件有效。