Вказівники на вказівники

В C при наявності масиву рядків (якщо довжина цих рядків різна, то маємо вільний масив) можна визначити масив вказівників на ці рядки. В зв’язку з тим, що кожний рядок є масивом, а його ім’я – вказівником-константою, масив вказівників буде містити вказівники на вказівники. Можна описати змінну, яка матиме тип «вказівник на вказівник». Ознакою такого типу є повторення символу «*» при описі змінної. Кількість символів «*» означає кількість рівнів вказівника. Вказівник на вказівник – це область пам’яті, яка зберігає адресу на вказівник. Під час опису вказівник на вказівник може бути ініціалізованим.

Приклад:

int data = 5;

int *ptr = &data; //вказівник на int

int **ptr_ptr = &ptr; //вказівник на вказівник

int ***ptr_ptr_ptr = &ptr_ptr; //вказівник на вказівник

Тоді для звернення до змінної data можна скористатися операцією взяття вмісту за адресою. Усі наведені нижче оператори присвоюють змінній data значення 10.

data = 10;

*ptr = 10;

**ptr_ptr = 10;

***ptr_ptr_ptr = 10;

Для звернення до пам’яті за допомогою вказівників на вказівники можна застосовувати і індекси. Наприклад, еквівалентними є такі посилання на змінну data:

ptr[0] або *ptr

ptr_ptr[0][0] або **ptr_ptr

ptr_ptr_ptr[0][0][0] або ***ptr_ptr_ptr


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: