Лекция: Double Srednee ( int n );
Int main ()
{
setlocale (0, "");
Int n;
Do
{
cin >> n;
if ( n >= 0 )
cout << «Среднее значение: » << Srednee ( n );
cout << endl;
}
while ( n >= 0 );
Return 0;
}
Double Srednee ( int n )
{
static int Sum = 0, Count = 0;
++ Count;
Sum += n;
return double ( Sum ) / Count;
}
Локальные static-переменные Sumи Count инициализируются значениями один раз при первом вызове функции Srednee. Затем их значения изменяются, и эти измененные значения после завершения работы функции сохраняются до ее следующего вызова.
Альтернативным решением этой задачи является использование глобальных переменных. Однако использование глобальных переменных чревато нежелательными побочными эффектами, связанными с возможными скрытыми изменениями их значений в других функциях программы.
Внешние static-переменные определяются вне функций. Они, так же как и локальные static-переменные имеют глобальное время жизни. Но их область видимости ограничена файлом проекта, в котором они определены (они могут быть доступны только в функциях, расположенных в этом же файле и не видны из других файлов проекта). Таким образом, их можно рассматривать как глобальные переменные с областью видимости, ограниченной файлом, в котором они определены.
Спецификатор static можно применять и к функциям.