У мові C та сама область пам’яті може мати кілька псевдонімів. Ви можете оголосити кілька покажчиків і змусити їх посилатися на ту саму змінну. Це не просто особливість мови, а фундаментальна можливість, яка змінює підхід до управління пам’яттю та доступу до даних.
Розглянемо такий сценарій. Вам потрібно кілька посилань на одну і ту ж цілісну змінну. Ви можете оголосити їх і миттєво зв’язати їх.
`
У цьому фрагменті коду p, q та r – це все покажчики на цілі числа. Усі вони вказують на i. Привласнення r = p не копіює значення i. Воно копіює адресу, що зберігається в p. Оскільки p містить адресу i, r тепер також містить адресу i.
Одна змінна, багато імен
Після виконання коду в пам’яті існує одна ціла змінна i. Однак звернутися до цих даних можна чотирма способами.
i: Ім’я вихідної змінної.*p: Значення за адресою, що зберігається вp.*q: Значення за адресою, що зберігається вq.*r: Значення за адресою, що зберігається вr.
Вони ідентичні. Змініть i. Зміниться * p. Змініть *q. Зміниться i. Дані знаходяться на одній адресі. Вказівники – це просто мітки.
Немає жорсткого обмеження на кількість покажчиків, які можуть зберігати ту саму адресу. Ви можете ланцюжково пов’язувати їх необмежено. Конструкція a=&i; b = a; c = b; d = c; працює так само. Кожне надання копіює значення покажчика. Він не створює нову копію даних.
«Будь-яка кількість покажчиків може вказувати на ту саму адресу.»
Ця можливість потужна під час передачі посилань між функціями чи побудові пов’язаних структур. Вона дозволяє ощадливо використовувати пам’ять. Однак вона також несе ризик. Якщо ви розіменуєте один із цих покажчиків, ви звертаєтеся до тих самих базових байтів. Помилка в одному псевдонімі позначиться на решті. Але при правильному використанні ця можливість є стандартною практикою C.

































































