函数内部和外部的静态变量之间的区别?

时间:2011-05-03 11:43:35

标签: c++ syntax static keyword

static int count;

int main()
{

 static int count;    

}

在任何函数内外声明的静态变量之间是否有任何区别?

(我的意思是变量计数的范围和可见性

3 个答案:

答案 0 :(得分:16)

您的第一个count只能在模块中访问(该文件中的代码)。您的第二个count只能在main内访问。

答案 1 :(得分:3)

当您在方法之外声明时,所有静态方法函数在其声明之后写入。虽然只能通过方法来访问方法中声明静态变量。

答案 2 :(得分:3)

全局变量的动态初始化也有所不同(参见here)。总结一下,如果你有:

static int count = bar();

int main ()
{
  static int count = foo ();
}

执行main时会调用'foo',但标准(C ++ '03)根本不需要调用'bar'!