Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Im : real

END;

Таким чином можна ввести тип, даними якого є комплексні числа. Тип complex є записом, який складається з двох полів: дійсної (ге) і уяв­ної (im) частин комплексного числа. Оскільки обидва поля належать до одного типу, то означення типу можна записати так:

TYPE complex = RECORD

re,im: real

END;

2.12. Вказівники

До цього часу ми зустрічались з змінними, описаними в розділі var з описом імені змінної та її типом. Такі змінні Н. Вірт назвав статичними. Ці змінні можна використовувати, якщо відомо скільки пам’яті потрібно буде програмі. Але існує ряд задач, для яких неможливо наперед передбачити об’єм необхідної пам’яті. В цих задачах потрібний інший підхід: змінні потрібно формувати динамічно, не зв’язуючи їх з структурою програми. Так як засобів для явного опису таких змінних немає, то звертатися до них по імені неможливо. До таких змінних звертаються через вказівники, що створюються при формуванні динамічних змінних. Приклад однонаправленого списку схематично можна зобразити наступним чином:

  ® Вказівник ® Вказівник ® Nil
  Дані   дані    
               

Вказівник вказує на наступний елемент. Всі елементи списку мають однаковий формат. Верхнє поле кожного елемента використовується для вказування адреси наступного елемента. Якщо елемент не має наступного елемента , то вказівнику в ньому присвоюється значення Nil.

Опис типу “ вказівник ” має вигляд:

^Ідентифікатор типу

Приклад

Type

Link=^object;

Var

P: Link;

ЗмІнна Р є вказівником на дані типу object. Вказівник – це адреса, а вказівникова змінна – це вмістиме ,що міститься по даному адресу.

Приклад. Описати динамічну структуру даних, що є однонаправленим списком. Кожний елемент цієї структури має два поля. Перше поле відводиться під дійсне число, а друге – містить адресу наступного елемента динамічної структури.

Type

Point=^Data;

Data=record

R:real;

Next:point

End;

Var

A:Point;

А – ідентифікатор,що має тип вказівника Спочатку значення A неозначено, оскільки описана структура даних не створена і вказівник не вказує адресу початкового елемента динамічноі структури. Щоб створити таку структуру в Паскалі передбачена процедура New(A). Ця процедура створює перший елемент динамічної структури і розміщує адресу цієї структури в вказівник, тобто в змінну А. Пам’ять для розміщення елементів динамічної структури береться зовні програми. Цю пам’ять принято називати “ кучею” в результаті виконання процедури New. В зв’язку з введенням в Паскалі типу данних вказівник в стандарті мови передбачена константа з іменем Nil. Nil –це вказівник, який ні на що не вказує, тобто він має значення Nil.



В Паскалі є процедура Dispose,форма запису якої має вигляд

Dispose(Ідентифікатор)

З допомогою цієї процедури звільняється пам’ять, занята структурами даних, на які вказує посилання. Звільнена пам’ять повертається в секцію Heap(‘’куча’’).

Приклад

Var Q:^t;

Begin


Дата добавления: 2015-08-05; просмотров: 3; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
J: k..l; | New(Q);
lektsii.com - Лекции.Ком - 2014-2018 год. (0.009 сек.) Главная страница Случайная страница Контакты