Необхідна умова: Покажчики на C
Покажчик на вказівник у C використовується, коли ми хочемо зберегти адресу іншого вказівника. Перший покажчик використовується для зберігання адреси змінної. А другий покажчик використовується для зберігання адреси першого покажчика. Ось чому вони також відомі як подвійні покажчики . Ми можемо використовувати вказівник на вказівник, щоб змінити значення звичайних покажчиків або створити двовимірний масив змінного розміру. Подвійний вказівник займає стільки ж місця в стеку пам’яті, скільки звичайний вказівник.
Оголошення покажчика на покажчик у C
Оголошення вказівника на вказівник подібне до оголошення вказівника в C. Різниця полягає в тому, що ми повинні поставити додатковий «*» перед назвою вказівника.
c форматований рядок
data_type_of_pointer **name_of_variable = & normal_pointer_variable;>
int val = 5; int *ptr = &val; // storing address of val to pointer ptr. int **d_ptr = &ptr; // pointer to a pointer declared // which is pointing to an integer.>
Наведена вище діаграма показує представлення вказівника на вказівник у пам’яті. Перший покажчик ptr1 зберігає адресу змінної, а другий покажчик ptr2 зберігає адресу першого покажчика.
Приклад подвійного покажчика в C
C
// C program to demonstrate pointer to pointer> #include> int> main()> {> >int> var = 789;> >// pointer for var> >int>* ptr2;> >// double pointer for ptr2> >int>** ptr1;> >// storing address of var in ptr2> >ptr2 = &var;> >// Storing address of ptr2 in ptr1> >ptr1 = &ptr2;> >// Displaying value of var using> >// both single and double pointers> >printf>(>'Value of var = %d
'>, var);> >printf>(>'Value of var using single pointer = %d
'>, *ptr2);> >printf>(>'Value of var using double pointer = %d
'>, **ptr1);> >return> 0;> }> |
>
>Вихід
Value of var = 789 Value of var using single pointer = 789 Value of var using double pointer = 789>
Як працює подвійний покажчик?
виконати оболонку сценарію
Роботу подвійного вказівника можна пояснити за допомогою зображення вище:
- Подвійний покажчик оголошується за допомогою синтаксису, показаного вище.
- Після цього ми зберігаємо адресу іншого вказівника як значення цього нового подвійного вказівника.
- Тепер, якщо ми хочемо маніпулювати або розіменовувати будь-який з його рівнів, ми повинні використовувати оператор Asterisk ( * ) стільки разів, скільки разів ми хочемо перейти нижче рівня.
Розмір вказівника на вказівник у C
У мові програмування C подвійний вказівник поводиться подібно до звичайного вказівника в C. Отже, розмір змінної подвійного вказівника завжди дорівнює розміру звичайних вказівників. Ми можемо перевірити це за допомогою наведеної нижче програми C.
Приклад 1: програма C для визначення розміру вказівника на вказівник.
C
// C program to find the size of pointer to pointer> #include> int> main()> {> >// defining single and double pointers> >int> a = 5;> >int>* ptr = &a;> >int>** d_ptr = &ptr;> >// size of single pointer> >printf>(>' Size of normal Pointer: %d
'>,>sizeof>(ptr));> >// size of double pointer> >printf>(>' Size of Double Pointer: %d
'>,>sizeof>(d_ptr));> >return> 0;> }> |
>
>Вихід
Size of normal Pointer: 8 Size of Double Pointer: 8>
Примітка: Результат наведеного вище коду також залежить від типу машини, яка використовується. Розмір вказівника не є фіксованим у мові програмування C і залежить від інших факторів, таких як архітектура центрального процесора та використовувана ОС. Зазвичай для 64-розрядної операційної системи розмір становитиме 8 байт, а для 32-розрядної операційної системи – 4 байти.
Застосування подвійних покажчиків у C
Нижче наведено основні способи використання покажчика на покажчик у C:
- Вони використовуються в динамічному розподілі пам'яті багатовимірних масивів.
- Їх можна використовувати для зберігання багаторівневих даних, таких як абзац текстового документа, речення та семантика слів.
- Вони використовуються в структурах даних для безпосереднього керування адресами вузлів без копіювання.
- Їх можна використовувати як аргументи функції для маніпулювання адресою, що зберігається в локальному покажчику.
Багаторівневі покажчики в C
Подвійні покажчики — не єдині багаторівневі покажчики, які підтримуються мовою C. Що, якщо ми хочемо змінити значення подвійного покажчика?
У цьому випадку ми можемо використовувати потрійний вказівник, який буде вказівником на вказівник на вказівник, тобто int ***t_ptr.
Синтаксис потрійного покажчика
pointer_type *** pointer_name;>
Подібним чином, щоб змінити значення потрійного вказівника, ми можемо використовувати вказівник на вказівник на вказівник на вказівник (Покажчик чотирьох рівнів). Іншими словами, можна сказати, що для зміни значення змінної рівня x ми можемо використовувати покажчик рівня x+1. І цю концепцію можна розширити.
екта капур актор
Примітка : Ми можемо використовувати будь-який покажчик рівня в C. Це не має обмежень, але це робить програму дуже складною та вразливою до помилок.
Потрібно прочитати – Покажчик на функцію в C