8 8 8 8 8 8 8 8 8 8 8 8 8 8
8
8
|
|
Типы данных - Программирование от RIN.RU
Типы данных
Указательные типы
Переменная указательного типа содержит значение, указывающее на переменную обычного типа - адрес этой переменной (таблица 1.8).
pointer // Указатель без типа. ^typel // Указатель с типом.
Если исходный тип (тип переменной, на которую должен ссылаться указатель) еще не объявлен, его надо объявить в том же разделе объявления типов, что и тип указателя.
Только исходный тип указателей может совпадать с собственно типом.
Таблица 1.8. Средства работы с указателямиСредство | Описание | New | Распределяет новый участок динамической памяти и записывает его адрес в переменную указательного типа | Оператор @ | Направляет переменную-указатель на область памяти, содержащую любую существующую переменную, процедуру или функцию, включая переменные, имеющие идентификаторы | GetMem | Создает новую динамическую переменную заданного объема и записывает ее адрес в переменную указательного типа |
Указатели и адресные функции
Информация, содержащаяся в переменной указательного типа, - это адрес некоторого участка в машинной памяти. Эти значения задаются во время работы программы и могут меняться от одного запуска к другому. Следующие функции обеспечивают доступ к адресной информации в программе и тестирование переменных-указателей.
Функция | Описание | Addr | Возвращает адрес указанного объекта | Assigned | Проверяет, равно ли значение процедурной функции Nil | Ptr | Преобразует адрес в указатель |
Зарезервированное слово Nil указывает значение указателя, который ни на что не указывает. Такие указатели называют неопределенными. В Object Pascal только при определении указателей можно нарушать правило, по которому все указываемые идентификаторы, в том числе идентификаторы типов, должны быть объявлены выше. Здесь можно указать идентификатор еще необъявленного типа, как в следующем примере:
PointerType = ^NotYetDefinedType;
Однако необъявленный тип необходимо объявить ниже в том же блоке объявления типов.
Определенный в Object Pascal тип Pointer- это указатель без типа. Обратиться к переменной через такой указатель невозможно (к переменной типа Pointer нельзя дописывать символ "^"). Однако можно задать ей другой указательный тип.
По значениям переменных тип Pointer совместим с остальными указательными типами.
Совет: Во многих языках указательные типы как таковые отсутствуют. Однако в С и C++ они есть и определяются звездочкой перед типом объявляемой переменной. Указатели в C/C++ трактуются наподобие целых переменных. программисты Delphi избегают подобного манипулирования указателями.
1 2 3 4 5 6
8 8 8
| |
|
|