Всегда у меня этот static какие-то затруднения вызывал, а на самом деле все просто.
Если в модуле глобальная переменная объявлена static, то она видна только из этого модуля. То же самое, если static стоит в объявлении функции.
Если в функции локальная переменная объявлена static, то она сохраняет свое значение между вызовами функций. Инициализируется только один раз. Вот пример - скользящее среднее:
double average(double x)
{
static double count = 0;
static double sum = 0;
++count;
sum += x;
return sum/count;
}
int main()
{
cout << "average = " << average(1) << endl;
cout << "average = " << average(2) << endl;
cout << "average = " << average(4) << endl;
}
В функции average переменные count и sum будут инициализированы нулями только при первом вызове функции. Можно объявлять в разных функциях статические переменные с одинаковыми именами - компилятор следит за соответсвием.
Ой, а вот тут нашел на YouTube как дядька под гармошку на площади поет Русское поле экспериментов чуть ли не лучше Летова: http://www.youtube.com/watch?v=Bxhx1tlzn44
понедельник, 28 декабря 2009 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий