Листинг 2.7. Пример работы с типизированной ссылкой
Program UsingTypedPointers; Type pDouble= "Double; Var MyPDouble: pDouble; {Описание типа данных — указателя на переменную типа Double} (Описание переменной — типизированного указателя на переменную типа Double} Begin New(MyPDouble); {Выделение места в динамической памяти под одну переменную типа Double (размер необходимой памяти определяется автоматически) , адрес выделенной памяти заносится в переменную MyPDouble} MyPDoubleA= 12.8; {Присвоение переменной, на которую ссылается переменная-указатель значения 12.8} Dispose(MyPDouble); {Освобождение памяти, занятой под переменную, на которую указывает переменная MyPDouble. Адрес освобожденной памяти остается в переменной MyPDouble, но его использование недопустимо} End. 2.4.3. Динамические массивы В Delphi добавлена интересная возможность описания массивов без указания размерностей и, соответственно, пределов изменения индексов: Var IntArray: Array OfInteger; Такие массивы являются динамическими6 и изначально имеют нулевую длину. Установка размера массива и определение его во время выполнения программы производится так же как и для строк, с помощью функций SetLength и Length, соответственно. Элементы в данном случае нумеруются от нуля. Program UsingDynamicArraysl; Var А, В: Array of Integer; {Описание двух переменных — динамических массивов целочисленных элементов} Begin SetLength(A, 5) А[0]:= 1; End. {Установка размера массива А (5 элементов)} {Присвоение значения I элементу массива А с номером 0} Заметим, что в Turbo Pascal также существовала возможность использования динамических массивов через типизированные указатели, под которые память выделяется процедурой FreeMem, а не New. Однако о безопасности использования таких структур должен был заботиться программист. Также неудобства доставляла необходимость указания размерностей таких массивов и ограничение максимального числа элементов. В Object Pascal реализована более удобная схема работы с динамическими массивами. Вариантные структуры данных 2.5.1. Общие понятия Структура данных программы на языке Pascal (то есть переменные) описывается в одном месте каждого модуля — в разделе описания переменных. Данный раздел начинается ключевым словом Var и специально предназначен для этого. Таким образом, переменные не могут быть введены во время выполнения программы. Еще одна существенная особенность представления информации в Pascal — это назначение типа переменной на этапе компиляции. Однако при программировании под Windows довольно часто встречаются задачи, в которых переменные должны изменять свой тип во время выполнения программы, соответственно, нельзя на этапе написания программы указать, какого именно типа должна быть та или иная переменная. В основном такие возможности требуются от программы, работающей с базами данных и использующей технологию СОМ. В Delphi введена поддержка переменных, которые не имеют конкретного типа данных на этапе компиляции, а в процессе выполнения программы могут хранить данные разных типов. Такие переменные называются вариантными (англ. Variant — вариантный, различный) и описываются по обычным правилам с указанием в качестве типа данных ключевого слова Variant: Var <Назвак/!е леременной>: Variant; Во время выполнения программы в вариантных переменных могут храниться данные любого типа, за исключением структурных (записей и статических массивов) и ссылочных (типизированные и нетипизирован-ные указатели, метаклассы и указатели на экземпляры классов7). Также в вариантных переменных не могут находиться значения множественных типов данных. Неинициализированной переменной автоматически присваивается специальная константа Unassigned,описанная в модуле Заметим, что для хранения одних и тех же данных вариантным переменным потребуется больше места в памяти, чем типизированным переменным. Кроме того, операции над вариантными переменными выполняются несколько дольше. Поэтому применение вариантов оправдано только в тех случаях, когда невозможно обойтись обычными переменными. Листинг 2.9. Пример описания и использования вариантной переменной
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (557)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |