| ||||||||||||||||||||||||||
|
УКАЗАТЕЛИ И ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ.2. Описание указателей.При выполнении любой программы каждая используемая в ней переменная получает свой адрес в оперативной памяти. Программисту не нужно заботиться о механизме определения адресов, это делается автоматически. В Турбо Паскале имеются два способа распределения памяти для переменных: статический и динамический. При статическом распределении всем объявленным в программе переменным в сегменте данных выделяются фиксированные участки оперативной памяти. В связи с этим использование заранее не объявленных переменных не допускается. При динамическом распределении памяти имеется возможность создавать новые, не объявленные заранее переменные и размещать их на свободные участки в динамической области оперативной памяти. Это достигается за счет использования указателей. Указатель - это элемент данных, представляющий собой ссылку (адрес) на определенную ячейку оперативной памяти, начиная с которой записывается значение переменной. Переменные, которые размещаются в динамической области оперативной памяти с помощью указателя, называются динамическими переменными. Указатель может принимать значения, равные всем адресам оперативной
памяти, по которым возможна запись данных. Указатель может иметь также
стандартное значение Nil (пусто), которое говорит о
том, что соответствующая динамическая переменная в оперативной памяти
отсутствует. Указатель объявляется с помощью специального символа "карэ" (^), за
которым записывается идентификатор типа динамической переменной в следующем
виде: В этом случае A, B, C - являются указателями на переменные типа integer. Для обращения к значениям этих переменных служат идентификаторы A^, B^, C^. Кроме того указатель может быть объявлен явно следующим образом: var P: pointer;, где P - имя указателя, а pointer - тип указателя. Турбо Паскаль допускает описание типизованных констант типа pointer
(констант ссылочного типа). Начальным значением таких констант может быть только
Nil. Например: Значения указателей можно сравнивать только с помощью проверки на равенство и неравенство. Допустимо также использование оператора присваивания. Для динамических переменных (в вышеприведенном примере это A^, B^, C^) допустимы все те операции, что и над обычными переменными данного типа. |
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||||
© Copyright(c) 2004 Amro Group. All rights reserved |
|