Лекція 8. Покажчики
| Сайт: | Навчально-інформаційний портал НУБіП України |
| Курс: | Основи програмування |
| Книга: | Лекція 8. Покажчики |
| Надруковано: | Гість-користувач |
| Дата: | неділя, 15 лютого 2026, 19:42 |
1. Адреси пам'яті
Для всіх відзначених раніше типів даних ім'я - це символічне позначення місця в пам'яті. Як відомо, після компіляції вихідної програми ці імена заміщаються відповідними адресами. Під час виконання програми використовуються значення, які зберігаються по певних адресах. Наприклад, в операторі присвоєння var1=var2; значення змінної var2 копіюється в змінну var1.
Поруч із такими змінними в мові С++ передбачаються й такі, які зберігають адреси змінних або покажчики.
2. Покажчик. Операції над покажчиками
Покажчик - це змінна, що містить адреса інший змінної.
Операції над покажчиками
Якщо визначені змінніx, і int x, і;
то поруч зі звичайними діями можна оперувати й з їхніми адресами:
px=&x; //& взяти адресу
за допомогою операції & (взяти адресу). Відзначимо, що праворуч від & може стояти тільки ім'я змінної або змінної з індексом, а не вираження загального виду.
Унарна операція * розглядає свій операнд як адресу кінцевої мети й звертається по цій адресі, щоб витягти вміст.
Між собою унарні операції рівноправні й виконуються праворуч ліворуч *px++ // y значення комірки з покажчиком 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);
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу