Лекція 8. Покажчики

Сайт: Навчально-інформаційний портал НУБіП України
Курс: Основи програмування
Книга: Лекція 8. Покажчики
Надруковано: Гість-користувач
Дата: неділя, 15 лютого 2026, 19:42

1. Адреси пам'яті

Для всіх відзначених раніше типів даних ім'я - це символічне позначення місця в пам'яті. Як відомо, після компіляції вихідної програми ці імена заміщаються відповідними адресами. Під час виконання програми використовуються значення, які зберігаються по певних адресах. Наприклад, в операторі присвоєння var1=var2; значення змінної var2 копіюється в змінну var1.

        Поруч із такими змінними в мові С++ передбачаються й такі, які зберігають адреси змінних або покажчики.

2. Покажчик. Операції над покажчиками

Покажчик - це змінна, що містить адреса інший змінної.
Операції над покажчиками
Якщо визначені змінніx, і int x, і;
то поруч зі звичайними діями можна оперувати й з їхніми адресами:
px=&x; //& взяти адресу
за допомогою операції (взяти адресу). Відзначимо, що праворуч від може стояти тільки ім'я змінної або змінної з індексом, а не вираження загального виду.
Унарна операція розглядає свій операнд як адресу кінцевої мети й звертається по цій адресі, щоб витягти вміст.

Між собою унарні операції рівноправні й виконуються праворуч ліворуч *px++ // значення комірки з покажчиком px+1

і(*px)++ //x+1 також ++*px.

Для покажчиків можна застосовувати операцію взяти адресу, де перебуває сам покажчик &px.

3. Приклад

Функція, що підраховує число символів у рядку (не враховуючи завершального 0) має вигляд:

 int strlen(char* p) {

int i = 0;

while (*p++) i++; return i;

}

 Інший спосіб знайти довжину полягає в тому, щоб спочатку знайти кінець рядка, а потім відняти адрес початку рядка від адреси її кінця:

 int strlen(char* p) { char* q = p;

while (*q++) ; return q-p-1;

}

 Наприклад, використання постфіксной операції збільшення робить наступні цикли while ідентичними:

 while (*string) { while (*string) {

cout << *string++;}

cout << *string; string++;}

 

 

Крім того, визначені відносини:

 ==    ! =    >    <

 В арифметичних виразах замість імені змінної можна застосовувати операцію доступу за покажчиком.

Коли:

int x,y,*px;

if (px==&x) y=*px+1; // y=x+1 else printf (“%d \n”, *px);

Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0