Посилання та покажчики
Покажчики – головна особливість мови, вони відкривають широкі можливості для роботи з пам’яттю. Вони передають інформацію про розташування іншої змінної в пам’яті. Перед використанням вони, подібно іншим змінним, оголошуються у вигляді type *pointer. Type – тип змінної, pointer – ім’я покажчика.
Щоб задати вказівником значення іншої змінної, використовуються посилання. Вони передають адреса змінної і використовуються в якості безпечного покажчика.
int a = 2;
int *pointer;
pointer = &a;
Посилання дозволяють працювати з покажчиком, як з об’єктом.
У даному випадку &a поверне 0x7340cad2a25c, *pointer – 2, але pointer без “*” – 0x7340cad2a25c.
Змінюючи значення, ми не міняємо його адресу, тому pointer так само буде посилатися на 0x7340cad2a25c, але при цьому змінить своє значення.
Покажчик на інший покажчик оголошується у вигляді:
int w = 100;
int *x = &w;
int **z = &x;
Покажчик на масив працює трохи іншим способом.
int c[5] = [1, 2, 3, 4, 5], *a;
Ми оголосили масив цілих чисел і покажчик int a.
В цьому випадку покажчик вказує не на сам масив, а тільки на його перший елемент. Таким чином,
a = c;
і
a = &c[0]; //1
еквівалентні між собою.
Тепер можна послатися на третій елемент масиву з допомогою виразу
*(a + 3)
або
a[3];
На прикладі вище, можна зауважити, що додавання в покажчиках працює іншим чином. До них можуть застосовуватися різні арифметичні операції.
Покажчик на масив зазначається так:
char (*pa)[10];
Але масив покажчиків виглядає так:
char *pc[10];