静态局部变量
静态局部变量的声明方式
在局部变量的类型前加上static即可进行静态局部变量的声明和定义
{
static int a = 0;
}
静态局部变量的作用域
和局部变量相同,从变量声明的位置起到花括号结束。
静态局部变量的生命周期
与局部变量不同,静态局部变量的生命周期是与程序“共存亡”。
即从加载资源(执行代码前)开始,到程序关闭,都是变量的生命周期。
为了验证此说法,可执行下列代码:
#include <stdio.h>
#include <stdlib.h>
void fun()
{
int a = 0;
static int b = 0;
printf("a=%d,b=%d\n",a,b);
a++;
b++;
}
int main(void)
{
fun();
fun();
fun();
system("pause");
return 0;
}
执行结果为:
a=0,b=0
a=0,b=1
a=0,b=2
因为每次执行fun函数时都要重新定义一边局部变量a,所以被打印出的a的值始终是1。
而因为b为静态局部变量,在代码执行前,即资源加载时就已经执行了"static int b = 0;"这条代码,所以在执行代码的过程中,并没有"static int b = 0;"这条代码,因为早就执行掉了,相当于这条语句已经“没了”。
验证方法:可以用断点来验证,把断点点在"static int b = 0;"这行语句前,执行时就会发现这个断点“没了”。