Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 4. Программа, иллюстрирующая использование локальных переменных



/*stat.c*/main() { doit(); doit(); doit(); doit(); }doit() { intautovar = 0; intstatvar = 0; printf("значениеautovarравно %dзначениеstatvar \равно %d\n", autovar, statvar); ++autovar; ++statvar; return(0); }

Давайте теперь слегка изменим определение переменных в функции doit(), с тем чтобы создать статическую переменную:

staticintstatvar = 0;

При выполнении программы со статической переменной мы получим следующий результат:

значение autovar равно 0 значение statvar равно 0значение autovar равно 0 значение statvar равно 1значение autovar равно 0 значение statvar равно 2значение autovar равно 0 значение statvar равно 3

При первом выполнении функции переменной statvar присваивается начальное значение, равное 0. Однако statvar определена как статическая переменная, что указывает компилятору на необходимость сохранения в памяти присвоенного ей значения и после завершения работы функции. Поэтому после первого завершения работы функции переменная statvar будет иметь значение, равное 1, которое получается благодаря инструкции ++statvar;. При следующем вызове функции исходным значением переменной является сохраненное за ней значение1 и поэтому присваивания ей 0 в качестве начального значения не производится.

Каждый раз во время выполнения функции значение переменной увеличивается, и это новое значение сохраняется за переменной при очередном вызове функции.





Дата публикования: 2015-07-22; Прочитано: 145 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...