МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 6
з дисципліни ”Алгоритмізація та програмування”
для студентів спеціальності 122 ”Комп’ютерні науки”
Затверджено
на засіданні кафедри інформаційних систем та мереж
Протокол №__ від _____.2018 р.
Львів-2018
Вказівники та посилання: Методичні вказівки до лабораторної роботи № 6 / Укл.: В.А. Висоцька. – Львів: Видавництво Національного університету ”Львівська політехніка”, 2018. – 12 с.
Укладачі Висоцька В.А., к.т.н., доцент
Відповідальний за випуск Литвин В.В., д.т.н., професор
Рецензенти Верес О.М., к.т.н., доцент
Берко А.Ю., д.т.н., професор
Ришковець Ю.В., к.т.н., старший викладач
Мета роботи: ознайомитись із поняттями вказівників та посилань на мовi Сі.
1. Теоретичні відомості
1.1. Основні поняття
Для підвищення ефективності програм в мовах C/C++ широко використовуються вказівники та посилання. Вказівники дають змогу працювати з адресами комірок оперативної пам’яті, реалізовуючи непрямий доступ до їхнього вмісту. Посилання є альтернативним ім’ям (синонімом) змінної і для нього місце в оперативній пам’яті не резервується. Вказівники використовують для доступу до елементів структурованих типів, роботи з динамічними змінними під час виконання програми, утворення спискових структур (стек, черга, дерево) тощо. Застосування вказівників і посилань як параметрів функцій дає змогу функціям змінювати значення своїх аргументів.
Посилання оголошується так:
<тип_даних> & <ім’я_посилання> = <ім’я_змінної>;
де тип_даних – це тип змінної, на яку вказує посилання, & – це оператор посилання, який означає, що наступне після нього ім’я є ім’ям змінної типу посилання.
Посилання слід ініціалізовувати ім’ям змінної під час виклику функції, в яку воно передається як аргументи. Використання посилання після його ініціалізації дає той же результат, що й безпосереднє використання змінної. Типи посилання та змінної, значенням якої ініціалізовується посилання, мають співпадати, інакше створиться анонімний об’єкт для змінної, що не була оголошена. Після ініціалізації посилання завжди посилається на певний об’єкт. Під час виконання програми не можна змінити посилання з одного об’єкта на інший.
Приклад 6.1.
int var = 10;
cout << "var = " << var << endl; // результат: var = 10
// оголошення та визначення посилання на змінну
int &p = var;
cout << "&p = " << &p << endl; // результат: &p = 00D9F7C8
cout << "p = " << p << endl; // результат: p = 10
p = 88;
cout << "p = " << p << endl; // результат: p = 88
cout << "var = " << var << endl; // результат: var = 88
// оголошення та визначення посилання на константу
const double &e = 2.72;
Робота з вказівниками позбавляє від необхідності переміщення об’єктів у пам’яті, яке займає багато часу, якщо об’єкти є великими. При використанні вказівників змінюються вказівники на адреси, а не на дані.
Вказівник на змінну – це місце розташування змінної в пам’яті комп’ютера, тобто її адреса.
Синтаксис оголошення вказівника такий:
<тип_даних> *<ім’я_вказівника> = [<значення>];
де тип_даних – простий або структурований тип адресованої змінної; символ * (зірочка) означає “вказати на”.
У мові С визначено такі операції для роботи з посиланнями та вказівниками:
- отримання адреси змінної (&, адресація) застосовується до об’єктів, які мають власне ім’я та розміщені в оперативній пам’яті;
- розіменування вказівника (*, розадресація) використовується для доступу до змінної, адреса якої зберігається у вказівнику. Цю операцію можна використовувати як для отримання, так і для зміни значення змінної, яка не є константою. Зауважимо, що символ “*” в оголошенні вказівника та в операції розадресації – це зовсім різні речі, які лише позначаються однаковим символом.
Існує кілька способів ініціалізації вказівника:
- присвоєння вказівнику адреси існуючого об’єкта:
- за допомогою операції отримання адреси &:
int а = 10;
int *р = &а; // у вказівник «p» записується адреса змінної «а»
(Для ознайомлення з повним текстом статті необхідно залогінитись)