局部静态变量static可以理解为在函数内部开了一个只有在该函数内部可以用的全局变量(基本等价全局变量,但只有在该函数内部可用)
1、局部静态变量中static只会初始化一遍
int output(void)
{
static int cnt=0; //第一次执行,第二次直接跳过
cnt++;
cout<<cnt<<" times"<<endl;
}
int main()
{
for (int i=1;i<=5<i++) output();
}
输出:
1 times
2 times
3 times
4 times
5 times
2、局部静态变量将数据储存在堆数据中而不是栈数据中,可以防止爆栈
int output(void)
{
static int cnt[1000000];//储存在堆,可以比直接在栈开的大
}