C++ static спецификатор
Что означает static перед объявлением переменной?
Спецификатор static перед пеменной означает, что переменная может хранит свое значение в пределах своей функции или ФАЙЛА.
Локальные static переменный ицициализируются ОДИН раз в начале выполнения программы, а НЕ при каждом входе в функцию, в которой они объявлены.
Например программа которая вычисляет среднее число:
#include <iostream>
using namespace std;
int avg (int i);
int main ()
{
int i;
cout << "input numbers (-1 for exit)";
do {
cin >> i;
if (i != -1) cout << "srednee = " << avg (i) << '\n';
} while (i> -1);
return 0;
}
int avg (int i){
static int sum = 0, count = 0;
sum = sum +i;
count++;
return sum/count;
}
Здесь обе локальные переменные sum и count объявлены статическими и инициализированы значением 0. Помните, что для статических переменных инициализация выполняется только один раз (при первом выполнении функции), а не при каждом входе в функцию. В этой программе функция avg () используется для вычисления текущего среднего значения от чисел, вводимых пользователем. Поскольку обе переменные sum и count являются статическими, они поддерживают свои значения между вызовами функции avg (), что позволяет нам получить правильный результат вычислений. Чтобы убедиться в необходимости модификатора static, попробуйте удалить его из программы. После этого программа не будет работать корректно, поскольку промежуточная сумма будет теряться при каждом выходе из функции avg().
Оставить свой ответ: