Вказівник

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Вказівни́к, рідше покажчик (англ. pointer або англ. reference) — тип даних в комп'ютерних мовах програмування. Значення вказівника посилається на інше значення, що записане будь-де в пам'яті комп'ютера (фактично містить його адресу).

Формальний опис[ред.ред. код]

В комп'ютерних науках, вказівник це різновид посилання.

Примітивом даних (або просто примітив) є будь-які дані які можуть бути зчитані або записані у пам'ять комп'ютера за один такт доступу до пам'яті (наприклад, типи даних byte (байт) і word (машинне слово) є примітивами).

Сукупністю даних (англ. aggregate) є група примітивів, які логічно послідовні у пам'яті і розглядаються сумісно як єдині дані (наприклад, сукупністю можуть бути 3 логічно послідовні байти, значення яких, представляє собою 3 координати точки у просторі). Коли сукупність складається з примітивів однакового типу, сукупність називається масивом; в деякому розумінні, багатобайтовий примітив word є масивом байтів, а деякі програмах він використовується саме таким чином.

В контексті цих визначень, byte є найменшим примітивом; кожна адреса в пам'яті визначає окремий байт. Адреса пам'яті початкового байту даних розглядається як адреса (або базова адреса пам'яті) усієї сукупності даних.

Вказівник на пам'ять (або просто вказівник) це примітив, значення якого за призначенням використовується як адреса пам'яті; це означає що вказівник вказує на адресу пам'яті. Це також означає, що вказівник вказує на дані [в пам'яті], якщо значення вказівника вказує на адресу даних у пам'яті.

Більш узагальнено, вказівник це різновид посилання, і вказівник посилається на дані, які зберігаються десь у пам'яті; для отримання цих даних виконується розіменування вказівника. Основною відмінністю вказівника від посилання є те, що значення вказівника інтерпретується як адреса в пам'яті, що є концепцією низького рівня.

Посилання служить як вид перенаправлення: Значення вказівника визначає яка адреса пам'яті (тобто, які дані) використовуються при обчисленні. Оскільки перенаправлення є фундаментальним аспектом алгоритмів, вказівники часто вважаються фундаментальним типом даних в мовах програмування; в статично (або сильно) типізованих мовах програмування, тип вказівника визначає тип даних, на які посилається вказівник.

Операції з вказівниками[ред.ред. код]

Мови програмування, в яких передбачений тип вказівник, містять, як правило, дві основні операції над ними: присвоювання і розіменування. Операція присвоювання записує в значення вказівника певну адресу в пам'яті комп'ютера.

Розіменування вказівника[ред.ред. код]

Операція отримання значення, на яке посилається вказівник, називається розіменування вказівника.

У мові програмування С:

double A = 5; /*декларація дійсної змінної подвійної точності */
double *a; /*декларація вказівника на дійсну змінну */
a = &A; /* присвоєння вказівнику адреси змінної A. a тепер вказує на A */
*a = 10; /*Присвоєння значення тому, на що вказує а. *a — операція розіменування вказівника */

a є вказівником на число типу double. *a — розіменування вказівника. У результаті змінна A отримує значення 10.

Нульовий вказівник[ред.ред. код]

Нульовий вказівник — це вказівник, який нікуди не вказує. Використовується для того, щоб показати, що дана зміна-вказівник ні на що не посилається. У різних мовах програмування представлений різними константами.

  • У мові Pascal: nil
  • У мові C: NULL
  • У мовах Java, C#: null