Вказівники, що вказують на одну адресу пам’яті

1

C дозволяє створити ситуацію, коли кілька покажчиків посилаються на ту саму ділянку пам’яті. Ви можете оголосити кілька покажчиків і змусити їх все вказувати на ту саму змінну. Це не просто теоретична особливість. Таке відбувається завжди у реальному коді.

Розгляньте наступний фрагмент:

`

Тут p отримує адресу i. q робить те саме. Потім r набуває значення p. Оскільки p зберігає адресу i, r тепер також вказує на i. Оператор присвоювання копіює адресу з правої частини до лівої. Він не копіює дані. Він копіює розташування.

Після виконання цих рядків змінна i фактично отримала псевдоніми. Тепер ви можете звертатися до цілого числа i через його оригінальне ім’я або через будь-який із покажчиків.

Змінна i тепер має чотири імені: i, *p, *q і *r.

Немає жорсткого обмеження на кількість покажчиків, які можуть зберігати ту саму адресу. Ви можете ланцюжок покажчиків поглиблювати настільки, наскільки це потрібно. Змініть *p, і *r побачить цю зміну. Всі вони дивляться на один і той самий осередок пам’яті.

Будь-яка кількість покажчиків може вказувати на ту саму адресу.

Ця поведінка є фундаментальною для роботи покажчиків. Це не особливий випадок. Це стандартна поведінка. Розуміння цього допомагає уникнути плутанини при налагодженні. Якщо ви бачите несподівані значення, перевірте, чи не змінюють кілька покажчиків одне й те саме місце. Не магія. Це просто пам’ять.