Указатель (тип данных)


Указатель (англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения — нулевого адреса. Последнее используется для указания того, что в данный момент указатель не ссылается ни на одну из допустимых ячеек. Указатели были изобретены Ющенко Екатериной Логвиновной в Адресном языке программирования (1955 г.), а не Harold Lawson в 1964 г., как долгое время считали за рубежом[1]. В 1955 г. в Адресном языке программирования были введены понятия косвенной адресации и адресации высших рангов, что покрывает понятие указателя и области его применения в современных языках программирования.

Языки программирования, в которых предусмотрен тип указателей, содержат, как правило, две основные операции над ними: присваивание и разыменование.

В 1955 г. Адресном языке программирования (СССР) была введена «штрих-операция» (разыменование указателя), которая была аппаратно реализована Ф-операцией процессора в компьютере «Киев» (1955 г.), а позднее в компьютерах М-20, «Днепр», компьютерах семейства БЭСМ (БЭСМ-2, БЭСМ-3, БЭСМ-3М и БЭСМ-4), семейств «Минск» и «Урал», также и некоторых других компьютерах советского производства. Многократное применение разыменования указателя также было аппаратно реализовано в указанных компьютерах групповыми операциями модернизации адресов для ускорения работы с деревобразными форматами (списки и другие абстрактные типы данных являются частным случаем деревобразных форматов).

Первая присваивает указателю некоторый адрес. Вторая служит для обращения к значению в памяти, на которое указывает указатель. Разыменование может быть явным и неявным; в большинстве современных языков программирования разыменование происходит только при явном указании[чего?][источник не указан 2786 дней].

В случае, если указатель хранит адрес какого-либо объекта, то говорят, что указатель ссылается или указывает на этот объект.