先看一段程序:测试环境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变量的初始化或者赋值操作只执行一次,即在第一次调用的时候进行初始化或赋值,然后再次调用不在执行赋值和初始化操作的语句。
本文通过一段使用VS2010的程序实例,详细解释了静态变量仅在首次调用时初始化或赋值的特性,从而导致输出结果为一系列相同的数值而非连续递增的情况。
268

被折叠的 条评论
为什么被折叠?



