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

Указатель (тип данных)
Диаграмма указателей

Указатель (пойнтер, англ. pointer) — переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения — нулевого адреса. Значение нулевого адреса не является реальным адресом и используется только для обозначения того, что указатель в данный момент не может использоваться для обращения ни к какой ячейке памяти.

Указатели применяются в двух различных сферах. Во-первых, они позволяют использовать некоторые выгоды косвенной адресации, широко применяемой в программировании на языках ассемблера. Во-вторых, указатели предлагают метод динамического управления памятью: их можно использовать для доступа к области с динамическим размещением памяти, обычно называемой кучей, или динамической памятью.

Переменные, размещаемые в куче, называются динамическими. Часто они не содержат связанных с ними идентификаторов, и ссылаться на них можно только с помощью указателей и ссылок.

Содержание

Операции над указателями

Языки программирования, в которых предусмотрен тип указателей, содержат, как правило, две основные операции над ними: присваивание и разыменование. Первая из этих операций присваивает указателю некоторый адрес. Вторая служит для обращения к значению в памяти, на которое указывает указатель. Разыменование может быть явным и неявным, в большинстве современных языков программирования разыменование происходит только при явном указании.

Пример указателей на языке Си:

int n = 6,                    /* Объявление переменной n типа int и присваивание ей значения 6 */
    *pn = malloc(sizeof (int)); /* и указателя pn и выделение под него памяти. */
*pn = 5;                      /* Разыменование указателя и присваивание значения 5. */
n = *pn;                      /* Присвоить n то значение (5), на которое указывает pn. */
free(pn);                     /* Освободить занятую память. */
pn = &n;                      /* Действие обратное разыменованию. Присваивает указателю */
                              /* pn адрес переменной n. Далее указатель будет ссылаться на n. */
n = 7;                        /* *pn тоже стало равно 7 */

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

Языки, предусматривающие использование указателей для управления динамической памятью, должны содержать оператор явного размещения переменных в памяти. В некоторых языках помимо этого оператора предусмотрен ещё и оператор явного удаления переменных из памяти. Обе эти операции часто принимают форму встроенных подпрограмм (функции malloc и free в Си, операторы new и delete в C++ и т. п.).

Нулевой указатель

Нулевой указатель − это указатель, хранящий специальное значение, используемое для того, чтобы показать, что данная переменная-указатель не ссылается (не указывает) ни на какой объект. В различных языках программирования представлен различными константами.

  • В языках C# и Java: null
  • В языках Си и C++: 0 или макрос NULL. Кроме того, в стандарте C++11 для обозначения нулевого указателя предложено новое ключевое слово nullptr[1]
  • В языке Паскаль: nil
  • В языке Python: None

См. также

Примечания

  1. A name for the null pointer: nullptr  (англ.). JTC1.22.32. JTC1/SC22/WG21 — The C++ Standards Committee (2 October 2007). Архивировано из первоисточника 11 февраля 2012. Проверено 4 октября 2010.



Wikimedia Foundation. 2010.

Смотреть что такое "Указатель (тип данных)" в других словарях:

  • Тип данных — (встречается также термин вид данных)  фундаментальное понятие теории программирования. Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и… …   Википедия

  • Алгебраический тип данных — в теории программирования любой тип, значения которого являются значениями некоторых иных типов, «обёрнутыми» конструкторами алгебраического типа. Другими словами, алгебраический тип данных имеет набор конструкторов типа, каждый из которых… …   Википедия

  • Абстрактный тип данных — Для улучшения этой статьи по информационным технологиям желательно?: Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное. Проставив сноски, внести более точные у …   Википедия

  • Целое (тип данных) — Целое, целочисленный тип данных (англ. Integer), в информатике  один из простейших и самых распространённых типов данных в языках программирования. Служит для представления целых чисел. Множество чисел этого типа представляет собой… …   Википедия

  • Множество (тип данных) — У этого термина существуют и другие значения, см. Множество (значения). Множество тип и структура данных в информатике, является реализацией математического объекта множество. Данные типа множество позволяют хранить ограниченное число значений… …   Википедия

  • Комплексный тип данных — Некоторые языки программирования предоставляют специальный тип данных для комплексных чисел. Наличие встроенного типа упрощает хранение комплексных величин и вычисления над ними. Содержание 1 Арифметика над комплексными 2 Поддержка в языках …   Википедия

  • Обобщённый алгебраический тип данных — один из видов алгебраических типов данных, который характеризуется тем, что его конструкторы могут возвращать значения не своего типа. Это понятие реализовано в нескольких языках программирования, в частности в языках ML и Haskell, причём в… …   Википедия

  • Указатель (значения) — Указатель (тип данных) в программировании Указатель в графических интерфейсах пользователя тип курсора Указатель (книжный) Дорожный знак Устройство индикатор. Указатель средства измерений часть показывающего устройства средства измерений См.… …   Википедия

  • Указатель — (тип данных) в программировании Указатель в графических интерфейсах пользователя тип курсора Книжный указатель Дорожный знак Устройство индикатор. Указатель средства измерений часть показывающего устройства средства измерений См. также Функция… …   Википедия

  • Тип возвращаемой переменной — В области программирования тип возвращаемой переменной (англ. return type) определяет и накладывает ограничения на тип данных, возвращаемых методом или функцией. Во многих языках программирования (особенно это касается языков со статической… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.