Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
технологии программирования.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.25 Mб
Скачать

Другие типы данных

     Указателиуказатель представляет собой переменную, значением которой является ад­рес начала размещения некоторых данных в основной памяти. Иными сло­вами, указатель содержит ссылку на соответствующий объект. Указатели могут ссылаться на данные любого типа. Переменные типа «указатель» яв­ляются, т.е. их значения определяются во время выполнения программы.

     Различают указатели типизированные и нетипизированныеТипизированный указатель может ссылаться на данные определенного типа, который задается при объявлении указателя или описании типа указателя. При этом исполь­зуется символ ^ перед именем типа адресуемых данных. Формат описания типа для типизированного указателя:

     Type <тип указателя> = ^<тип адресуемых данных>;

     Нетипизированный указатель имеет тип Pointer и может ссылаться на дан­ные любого типа.

     Пример. Объявление переменных-указателей.

                    Var p1: Pointer ; p2: ^ integer ;

Переменная p2 может адресовать данные типа integer , а переменная p1 – данные любого типа.

     С помощью указателя можно получить доступ к значению адресуемых дан­ных. Для этого используетсяразыменовывание указателя — справа от имени указателя приписывается символ ^.

     Указателю можно присвоить значение Nil, тогда данный указатель ни на что не будет указывать. Для определения адреса объекта, к которому можно обратить­ся с помощью указателя, используется адресная операция @, записываемая перед именем этого объекта.

     Пример. Var p: ^integer; n, k: integer;

                    . . .

                    p :=@ n ;

                    n :=100; k := p ^+10;

     После выполнения оператора присваивания с @ n в правой части указатель p ссылается на целочисленную переменную n и позволяет обращаться к ней с помощью конструкции p^. После выполнения трех приведенных операторов значение переменной k будет равно 110 .

     В модулях System и SysUtils имеется много типов указателей, которые можно применять без их предварительного описания. Модуль System используется компилятором автоматически, а имя модуля SysUtils вносится средой Delphi в список подключаемых модулей раздела uses для каждой формы.

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

     Описание данных процедурного типа похоже на заголовок процедуры или функции, в котором отсутствует имя подпрограммы. Разрешается использо­вать методы (подпрограммы, объявленные в классах), при описании кото­рых указываются слова of object .

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

     Для описания переменной вариантного типа используется слово variant. Этой переменной можно присваивать значения целочисленных (кроме int 64 ), вещественных, символьных, строковых и логических типов. Все эти типы считаются совместимыми с типом variant и при необходимости преобразования типов выполняются автоматически.

     Пример . Var v1, v2: variant;

                                 k: integer; x: real;

                                 . . .

                     k:=10; v1:=k;

                     x :=23.17; v 2:= x ; v 1:= x +0.5;