|
|||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ВКАЗІВНИЙ ТИП ________________________________________________________________
Для роботи з динамічними об’єктами застосовують тип значень – вказівний. Для нього в мові не зарезервовано стандартного слова, але це також простий тип даних. Якщо ім’я статичної змінної задає адресу даного в оперативній пам’яті, то вказівник на динамічну змінну - лише тип даного, а не розташування його в пам’яті. Вказівники являють собою змінну цілого типу, що інтерпретується як адреса байту пам’яті, яка містить певний елемент даних. Цим елементом може бути змінна, константа, адреса іншої змінної т.ін.
Нехай, програма містить в розділі оголошень такий рядок: VAR f:integer; VAR Number:integer; Цим рядком ми вказуємо компілятору на необхідність зарезервувати область в пам’яті, на яку ми будемо посилатися по імені Number. Адресу, за якою розміщена змінна Number, в пам’яті можна визначити за допомогою оператора @ P1:=@Number; чи за допомогою функції Addr. В результаті виконання операції P1:=@Number; в змінну P1 буде записана адреса змінної Number. У мові Pascal розрізняють типізовані і не типізовані вказівники (покажчики). Вказівник, який може посилатися лише на дані певного типу, називається типізованим, а відповідно тип даних називається базовим. Для оголошення типізованого вказівника використовується символ “^”, який записується перед іменем базового типу даних:
Загальний вигляд опису вказівного типу:
Значенням вказівного типу є вказівка на динамічну структуру даних, за якою відбувається доступ до цього об’єкта. Після “^” зазначають тип цього динамічного об’єкта, який повинен задаватись лише за допомогою імені типу – стандартного чи попередньо описаного. Приклад: Type v=^integer; x= ^array [1..10] of real; y=1..20; var y1: ^y; Значення змінної у1 буде вказівкою на деякий динамічний об’єкт діапазонного типу. Схематично зв’язок вказівника (значення вказівної змінної) і об’єкта, на який він вказує можна показати:
Приклад оголошення типізованого вказівника на об’єкти. Синтаксис такого вказівника наступний: TYPE ObjType= OBJECT … END; ObjPtr=^ObjType Наведемо приклади оголошення типізованих покажчиків. type {оголошення типів } vector = аrrау[1..5] of integer; filetype = file of integer; BytePtr = ^Byte: {тип покажчика на змінні типу Byte} IdentPtr = ^IdentRec; {тип покажчика, що посилається на ще не оголошений тип запису} IdentRec = record {тип запису, компонентом якого є покажчик типу IdentPtr } Ident: string[15]; Next: IdentPtr; End; ArrayPtr = ^ vector; {тип покажчика на масиви типу vector} TextPtr = ^text; {тип покажчика на текстові,файли } var {оголошення змінних } pbyte: BytePtr; prec: IdentPtr; parray: ArrayPtr; pfile: FilePtr; Нетипізований вказівник не зв'язується з певним типом даних і оголошується як змінна типу pointer. Такі вказівники доцільно використовувати для посилання на дані, тип і структура яких змінюються під час виконання програми. Оголошення нетипізованих вказівників здійснюється згідно з таким синтаксисом: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |