Глобальні змінні в c, уроки з
Ми вже знаємо, що змінні, оголошені всередині блоку, називаються локальними. Вони мають локальну область видимості (видно тільки всередині блоку, в якому оголошено) і автоматичну тривалість (створюються в точці визначення і знищуються в кінці блоку).
Глобальні змінні - це ті, які оголошені поза блоком. Вони мають статичну тривалість. що означає, що вони створюються при запуску програми і знищуються, коли програма завершує своє виконання. Глобальні змінні мають файлову область видимості (або неформально "глобальну"), тобто їх можна використовувати в будь-якому місці файлу, в якому вони оголошені.
Визначення глобальних змінних
Зазвичай глобальні змінні оголошують у верхній частині коду, нижче директив #include. але вище будь-якого іншого коду. наприклад:
global value: 3
local value: 9
Використовувати однакові імена для локальних і глобальних змінних - це прямий шлях до проблем і помилок, тому подібне слід уникати. Ще багато розробників додають до глобальних змінних префікс g_ ( "g" = "global"). Таким чином можна вбити відразу двох зайців: визначити глобальні змінні і уникнути конфліктів імен з локальними змінними.
Внутрішня і зовнішня зв'язок через ключові слова static і extern
На додаток до області видимості і тривалості, змінні мають ще одну властивість: зв'язок (linkage). Зв'язок змінної визначає, чи належать декілька згадок одного ідентифікатора до однієї і тієї ж змінної чи ні.
Мінлива без зв'язків - ця змінна з локальною областю видимості, яка відноситься тільки до блоку в якому визначена. Це звичайні локальні змінні. Дві змінні з однаковими іменами, але певні в різних функціях, не мають ніякого зв'язку - кожна вважається незалежною одиницею.
Змінна, що має внутрішні зв'язки, називається внутрішньої змінної (або статичної). Вона може використовуватися в будь-якому місці файлу, в якому визначена, але не ставитися до чого-небудь поза цього файлу.
Змінна, що має зовнішні зв'язки, називається зовнішньої змінної. Вона може використовуватися як в тому файлі, в якому визначена, так і в інших.
Якщо ви хочете зробити глобальну змінну внутрішньої (яку можна використовувати тільки всередині одного файлу) - використовуйте ключове слово static:
Тепер визначення символьних констант буде тільки один раз (в constants.cpp). Будь-які зміни, зроблені в constants.cpp, зажадають перекомпіляції тільки одного цього файлу.
Але є і зворотна сторона медалі: такі константи більше не будуть вважатися константами типу compile-time і тому не зможуть використовуватися будь-де, де буде потрібно константа такого типу.
Оскільки глобальні символьні константи повинні знаходитися в просторі імен (namespace) і бути доступними тільки для читання, то використовувати префікс g_ вже не обов'язково.
Застереження про (неконстантних) глобальних змінних
У початківців програмістів часто виникає спокуса використовувати просто безліч глобальних змінних, оскільки з ними легко працювати, особливо коли задіяно багато функцій. Проте, цього слід уникати! Чому? Про це поговоримо в наступному уроці.
За замовчуванням неконстантние глобальні змінні мають зовнішню зв'язок. Ви можете використовувати ключове слово static, якщо хочете зробити їх внутрішніми.
За замовчуванням глобальні константні змінні мають внутрішній зв'язок. Ви можете використовувати ключове слово extern, якщо хочете зробити їх зовнішніми.
Використовуйте префікс g_ для ідентифікації ваших неконстантних глобальних змінних.
Нижче ми навели приклади використання ключових слів extern і static з неконстантнимі і константними змінними:
ТОП СТАТТІ
- Урок 1. Введення в програмування
- Яку мову програмування навчав перших? Як заробити?
- Кращі паблік Вк для програмістів
- Словник програміста. Сленг, який повинен знати кожен кодер
- Що робити після установки Windows? встановлюємо програми
- Як навчитися сліпому набору на клавіатурі?
- Контакти