Разница между статической переменной внутри и снаружи функции? - PullRequest
8 голосов
/ 03 мая 2011
static int count;

int main()
{

 static int count;    

}

Есть ли разница между статическими переменными, объявленными внутри и снаружи какой-либо функции?

(я имею в виду область видимости и переменной count)

Ответы [ 3 ]

16 голосов
/ 03 мая 2011

Ваш первый count доступен только внутри модуля (код в этом файле).Ваш второй count доступен только в main.

3 голосов
/ 03 мая 2011

Существует также разница в динамической инициализации глобалов (см. здесь ). Подводя итог, если у вас было:

static int count = bar();

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

Вызов 'foo' будет происходить при выполнении main, но стандарт (C ++ '03) вообще не требует вызова 'bar'!

3 голосов
/ 03 мая 2011

Когда вы объявляете вне метода, он будет доступен для всех статических методов функций, написанных после его объявления .При объявлении статической переменной в методе будет доступен только этот метод .

...