Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

6.3.2. Порівняння покажчиків

Покажчики можна порівнювати, використовуючи оператори відношення ==, < і >. Проте для того, щоб результат порівняння покажчиків піддавався інтерпретації, порівнювані покажчики мають бути якимсь чином пов'язані між собою. Наприклад, якщо р1 і р2 – покажчики, які посилаються на дві окремі та ніяк не пов'язані між собою змінні, то будь-яке порівняння р1 і р2 в загальному випадку немає сенсу. Але, якщо покажчики р1 і р2 вказують на змінні, між якими існує деякий зв'язок (як, наприклад, між елементами одного і того ж масиву), то результат порівняння покажчиків р1 і р2 може мати певний сенс. Нижче у цьому підрозділі розглянемо приклад програми, у якій використовується порівняння покажчиків.

6.4. Покажчики і масиви

У мові програмування C++ покажчики і масиви тісно пов'язані між собою, причому настільки, що часто поняття "покажчик" і "масив" взаємозамінні. У цьому підрозділі ми спробуємо простежити цей зв'язок. Для початку розглянемо такий фрагмент програми:

char strMas[80];

char *p1;

p1 = strMas;

У цьому записі strMas є іменем масиву, що містить 80 символів, а р1 – покажчик на тип char. Особливий інтерес представляє третій рядок, у процесі виконання якого змінній р1 присвоюється адреса першого елемента масиву strMas. Іншими словами, після цього присвоєння р1 вказуватиме на елемент strMas[0]. Йдеться про те, що у мові програмування C++ використання імені масиву без індексу генерує покажчик на перший елемент цього масиву. Таким чином, у процесі виконання операції присвоєння p1 = strMas адреса strMas[0] присвоюється покажчику p1. Це і є ключовим моментом, який необхідно чітко розуміти: неіндексоване ім'я масиву, використане у виразі, означає покажчик на початок цього масиву.

Ім'я масиву без індексу утворює покажчик на початок цього масиву.

Оскільки після розглянутого вище присвоєння покажчик р1 вказуватиме на початок масиву strMas, то р1 можна використовувати для доступу до елементів цього масиву. Наприклад, якщо потрібно отримати доступ до п'ятого елемента масиву strMas, використовується один з таких виразів: strMas[4] або *(p1+4).

У обох випадках буде виконане звернення до п'ятого елемента. Необхідно пам'ятати, що індексування елементів масиву починається з нуля, тому при індексі, що дорівнює чотирьом, забезпечується доступ до п'ятого елемента. Таке саме враження справляє підсумовування значення початкового покажчика (р1) з числом 4, оскільки р1 вказує на перший елемент масиву strMas.

Необхідність використання круглих дужок, у які поміщено вираз p1+4, пов'язана з тим, що оператор "*" має вищий пріоритет, ніж оператор додавання "+". Без цих круглих дужок вираз звівся би до отримання значення, яке адресується покажчиком p1, тобто значення першого елемента масиву, яке потім було б збільшено на 4.

Варто знати! Переконайтеся зайвий раз в правильності використання круглих дужок у виразах з покажчиками. Інакше помилку буде важко відшукати, оскільки зовні програма може виглядати цілком коректною. Якщо у Вас є сумніви в потребі їх використання, то прийміть рішення на їх користь – шкоди від цього не буде.