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().

 

 



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы