先看一段程序:测试环境VS2010
#include <iostream>
using namespace std;
int get_function_static(int i)
{
static int i_test=i;
return i_test;
}
int main()
{
for(int i = 0; i < 10; i++)
{
cout<<get_function_static(i)<<endl;
}
system("pause");
return 0;
}
结果:
输出结果是10个0而不是0123456789.这是为什么了呢?
因为函数内部static变量的初始化或者赋值操作只执行一次,即在第一次调用的时候进行初始化或赋值,然后再次调用不在执行赋值和初始化操作的语句。