int fun()
{
    static int i=0;
    i++;
    return i;
}
int main()
{
        int n=0;
        cout<<fun()<<endl;
        cout<<fun()<<endl;
}

为什么会这样,求具体解释!

推荐图书

  • C++ Primer中文版(第4版)
  • More Effective C++:35个改善编程与设计的有效方法(中文版)
  • 设计模式:可复用面向对象软件的基础


1个回答

楼主,静态变量他是和全局的变量一样都是存在全局区域,但是他和全局数据不同的是他的访问区域只局限于那个作用域就比如在你这个函数,里面,但是在外面是访问不了的。 说到这里楼主应该知道静态变量的生命周期应该是和全局变量一样的,是和程序一样的,那么他就不会每次都初始化,只说一叫初始化就不会是发生多次的。 最后在罗嗦一句就是,这个初始化是发生在程序第一次执行到这个静态变量的作用局,他才会有且仅有地初始化依次下次再进入这个位置就会跳过这个区域。