对于静态变量还是有些不明白,就是说这个变量会保留每次运行结果的值而不是次次都初始化,如下代码
#include <iostream>
using namespace std;
int f(int a) //定义f函数,a为形参
{
auto int b=0; //定义b为自动变量
static int c=3; //定义c为静态局部变量
b=b+1;
c=c+1;
return a+b+c;
}
int main( )
{
int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<" ";
cout<<endl;
return 0;
}
运行结果为:
7 8 9
先后3次调用f函数时,b和c的值如书中表4.1所示。
第几次调用 | 调用时初值 | 调用结束时的值 | |||
自动变量b | 静态局部变量c | b | c | a + b+c | |
第1次 | 0 | 3 | 1 | 4 | 7 |
第2次 | 0 | 4 | 1 | 5 | 8 |
第3次 | 0 | 5 | 1 | 6 | 9 |