Змінні c++: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
правопис
Рядок 2:
== Атрибути змінних<ref>Х.М. Дейтел, П.Дж. Дейтел "КАК ПРОГРАММИРОВАТЬ НА C++" пятое издание
</ref> ==
Змінна — це абстрактна назва комірки чи декількох комірок пам'яті. Кожна змінна має шість атрибутів: ім'яназва,
адресу, значення, тип, область видимості і час життя.
Адреса змінної — це адреса комірки пам'яті, зв'язаної з даною змінною. Якщо змінна займає декілька
осередків, її адресою вважається адреса першого осередку. У різних місцях програми можуть існувати різні
змінні, що мають однакові іменаназви, але різні адреси. Наприклад, якщо програма складається з двох функцій f1()
і f2(), у кожній з них можна визначити змінну, що має тету самесаму ім'яназву, скажемо var. Це різні змінні, оскільки
вони зв'язані з різними функціями і відділені одна від одної невидимою стіною, що обмежує їхню область
видимості. Такі змінні називаються локальними. Вони з'являються усередині функцій чи окремих блоків.
Глобальні змінні доступні в будь-якій точці програми. Оголошення глобальної змінної повинне знаходитися
поза будь-якою функцією. Їхні іменаназви також можуть збігатися з іменаминазвами локальних змінних (таке явище
називається маскуванням), але при цьому виникає конфлікт іменназв. Для його розв’язання існує особливий засіб —
оператор розв’язування області видимості ::. Глобальна змінна існує від моменту її оголошення і знищується
після завершення роботи програми.
Рядок 26:
Змінна стає доступною, лише якщо вона зв'язана з типом даних. Тут важливі два моменти: яким чином
указується тип і коли відбувається зв’язування. У мовах програмування тип указується за допомогою
оголошення: явного чи неявного. Явне оголошення — це оператор програми, у якому перераховані іменаназви
змінних і зазначений їхній тип. Неявне оголошення — це механізм зв'язування змінних з типами на основі
прийнятих угод. У цьому випадку оператор оголошення не потрібний — перша поява іменіназви змінної в програмі
вважається її неявним оголошенням. Класичний приклад неявного оголошення змінних можна зустріти в
програмах мовою [[FORTRAN]], у якому всі змінні, іменаназви яких починаються з букв I, J, K, L, M і N, за
замовчуванням вважаються цілочисельними, а інші — дійсними. І явне, і неявне оголошення є статичними.
Область видимості і час життя змінної тісно зв'язані між собою. Будь-яку змінну необхідно зв'язати зі
Рядок 123:
=== Автоматичні змінні ===
Автоматичними називаються змінні, які з коміркою зв'язуються динамічно, тобто під час виконання
операторів оголошення, а з типом — статично. Такі змінні іменуютьсяназивають автоматичними, тому що вони
створюються і знищуються без утручання програміста.
У мові C++ усі локальні змінні за замовчуванням є автоматичними. За винятком адреси, всі атрибути
Рядок 139:
функції.
=== Динамічні змінні ===
Динамічні змінні не мають іменназв. Вони розташовуються в динамічній пам'яті, чи [[Купа (структура даних)|купі]], і видаляються з неї під час виконання програми. Для звертання до цих змінних потрібні особливі засоби: вказівники і посилання. Динамічні змінні створюються або оператором new, або стандартною функцією (malloc(), calloc() чи <code>realloc()</code>). Знищення динамічних змінних здійснюється оператором <code>[[Delete (C++)|delete]]</code> (після того, як пам’ять була виділена оператором <code>new</code>) чи функцією <code>free()</code> (при використанні разом з ним функцій <code>malloc()</code> , <code>calloc()</code> чи <code>realloc()</code>).
Оператор виділення пам'яті <code>new</code> у якості операнда використовує ім'яназву типу. Результатом цього оператора є вказівник на адресу динамічної області пам’яті, що має тип операнда. Динамічна змінна зв'язується з типом під час іляції, тому це зв'язування є статичним. Втім, динамічні змінні зв'язуються з виділеною областю пам'яті в ході виконання програми, тому цей вид зв'язування є динамічним.
 
=== Реєстрові змінні ===