русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Статичні змінні


Дата додавання: 2014-11-28; переглядів: 985.


Змінні sp і val зі stack.c а також buff і bufp із getch.c існують для приватного використання у функціях відповідних вихідних файлів і не призначені для доступу чимось іншим. Оголошення static зовнішньої змінної або функції обмежує зону дії цього об'єкту рештою вихідного файла, який буде компільовано. Зовнішній static, таким чином, дає можливість приховати такі назви як buf і bufp у комбінації з getch-ungetch, які в свою чергу, теж повинні бути зовнішніми для спільного їхнього використання, але чиї подробиці не повинні бути видимими користувачам getch і ungetch. Статичний тип зберігання даних вказується шляхом додання слова static перед звичайним оголошенням. Якщо дві функції і дві змінні компільовано у одному файлі, як от

static char buf[BUFSIZE]; /* буфер для ungetch */

static int bufp = 0; /* наступне вільне положення в buf */

 

int getch(void) { ... }

 

void ungetch(int c) { ... }

тоді жодна інша функція не в змозі буде звернутися до buf і bufp і ці назви не створюватимусть конфлікту з такими самими назвами в інших файлах тієї самої програми. Аналогічно, змінні, які використовуються функціями push i pop для маніпулювання стеком, можна приховати, якщо оголосити sp і val як static.

Зовнішні статичні змінні найчастіше вживаються зі змінними, але їх можна застосовувати також до функцій. Звично, назви функцій являються глобальними, тобто їх видно з будь-якої частини програми. Проте, якщо функцію оголошено як static, її назва стане невидимою поза межами файла, в якому її було оголошено.

Означення static застосовується також щодо внутрішніх змінних. Внутрішні статичні змінні являтимуться локальними для даної функції, так само як автоматичні змінні, але на відміну від останніх, вони залишатимуться дійсними, зберігаючи своє значення, замість появи і зникнення кожного разу як функцію викликано. Це означає, що внутрішні статичні змінні надають приватне, постійне збереження даних у межах однієї функції.

Вправа 4-11. Змініть getop, таким чином, щоб їй не потрібно було використовувати ungetch. Підказка: застосуйте внутрішню статичну змінну.


<== попередня лекція | наступна лекція ==>
Файли заголовка | Структура блоків


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн