- •Як описуються цілі числа?
- •Порядкове читання вводу.
- •Що робить функція-член get ()?
- •Клас string.
- •Створення структури.
- •Що робить оператор enum?
- •Як робиться перерахування значень?
- •1. Змінна і змінна показника.
- •Копіювання рядка із масиву.
- •Використання операцій new та delete.
- •13. Отримання простору пам’яті.
- •Комбіновані операції присвоювання
- •Вирази відношень
- •Аналіз умови циклу:
- •Логічні оператори.
- •Простий файловий ввід-вивід символьної інформації.
- •Деякі основні факти, що використовують cout у консольному виводі.
- •Файловий ввід.
- •Як вказати діапазон елементів у масиві?
- •Як зробити передачу адреси замість передачі самої структури?
- •Використання посилальних аргументів.
- •Аргументи, що визначаємо за замовчуванням.
- •Перевантаження функції.
- •Моделі пам’яті і простір імен - Окрема компіляція програм
- •Директива #include.
- •Об’ява структур.
- •Довгочасність існування області зберігання, області видимості та компоновки.
- •Область видимості і зв’язування.
- •Автоматична довгочасність збереження.
- •Автоматичні змінні та стек.
- •Регістрові змінні.
- •П’ять видів змінних
- •Мовне зв’язування, котре дотикається функції.
Довгочасність існування області зберігання, області видимості та компоновки.
У мові С++ використовуються три різні моделі збереження даних. Вони відрізняються між собою довгочасністю збереження даних у пам’яті:
Автоматична довгочасність зберігання. Її мають змінні, що об’явлені всередині визначення функції. Вони створюються, коли виконується функція або блок, де змінні визначені. Після виходу із блоку або функції застосовуємо змінними пам’ять, яка звільнюється. У С++ існує два види автоматичних змінних.
Статистична довгочасність зберігання. Її мають змінні, що визначені зовні визначення функції, або об’явлені з ключовим словом static. Вони існують у продовж усього часу виконання програм. У С++ існують три види статистичних змінних.
Динамічна довгочасність зберігання. Пам’ять, яку виділяємо операцією new, зберігаємо до тих пір, аж поки вона не буде звільнена за допомогою операції delete або до завершення програми, дивлячись яка подія наступить раніше. Іноді цю пам’ять називають вільною областю пам’яті.
Область видимості і зв’язування.
Область видимості визначає доступність імені у межах файлу (одиниці трансляції). Наприклад, змінна, що визначена у функції, може бути застосована тільки у цій функції, у той час як змінні визначені у файлі до визначення функції, можуть застосовуватися у всіх функціях. Зв’язування визначає сумісне використання імені у різних одиницях трансляції. Ім’я з зовнішнім зв’язуванням може бути використовані різними файлами, а ім’я з внутрішнім зв’язуванням – це функція у межах одного файлу. Імена автоматичних змінних не мають ніякого зв’язування, оскільки вони не допускають сумісного використання у програмі.
У мові С++ змінна має одну із декількох можливих областей видимості. Змінна, що має локальну область видимості (у межах блоку), видима тільки у межах цього блоку, у котрому вона визначена. Блок – це група операторів, що замкнуті у фігурні скобки. Наприклад, тіло функції є блоком, однак це тіло може бути вкладено у інші блоки. Змінна, що має глобальну область видимості (область видимості файлу), доступна у всьому файлі, починаючи з позиції, де вона була визначена. Автоматичні змінні мають локальну область видимості, а статистичні змінні мажуть мати різну область видимості в залежності від того, як вони визначені. Імена, що застосовані в області видимості прототипу функції, доступні тільки у межах круглих скобок, котрі містять список аргументів. Елементи, що об’явлені у межах класу, мають видимість у межах цього класу. Змінні, що об’явлені у просторі імен, мають область видимості у межах простору імен. Глобальна область видимості є окремим випадком області простору імен.
Функції можуть мати область видимості класу або область видимості простору імен, включаючи глобальну область видимості, але не можуть мати локальну область видимості.
Різні засоби збереження даних характеризуються часом існування, областю видимості і зв’язуванням. Розглянемо більш досконало властивості пам’яті С++.
Автоматична довгочасність збереження.
Параметри функції і змінних, що об’явлені всередині функції, за замовчуванням мають автоматичну довгочасність збереження. Вони мають локальну область видимості і не мають зв’язування. Іншими словами, коли об’явити змінну з іменем texas у функції main (), а потім об’явити ще одну змінну тим же ім’ям у функції oil (), то будуть дві незалежні змінні, кожна з яких буде доступна тільки у тій функції, у котрій об’явлена. Після завершення роботи функції всі її змінні зупинять своє існування. Зверніть увагу, що змінній виділяється пам’ять, коли програма передає управління блоку, у якому змінна визначена, але область видимості починається тільки після позиції об’явлення.
