Типи даних в “Сі”. Програмування на мові Сі”

Посилання та покажчики

Покажчики – головна особливість мови, вони відкривають широкі можливості для роботи з пам’яттю. Вони передають інформацію про розташування іншої змінної в пам’яті. Перед використанням вони, подібно іншим змінним, оголошуються у вигляді 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];