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

Надання значення змінній-показівнику

Читайте также:
  1. I. Визначення здібностей школяра шляхом спостереження.
  2. IV. ДЕЯКІ ІНШІ ОЗНАЧЕННЯ ГРУПИ
  3. А) визначення повинно бути співмірним; б) визначення не повинно робити кола; в) визначення має бути чіткім.
  4. Алгоритм призначення ДМПА
  5. Аналіз освітлення робочої зони розробника проекту з метою визначення та забезпечення його оптимального значення.
  6. Аналізатори, їх значення для життєдіяльності і забезпечення захисту людини від небезпек.
  7. Анафілактичний шок. Протокол надання медичної допомоги при анафілактичному шоці
  8. БНМ 5.1.5 Діючі значення напруги і сили струму
  9. Будинки і споруди. Будинки адміністративного та побутового призначення
  10. БУДІВНИЦТВА ТА АВТОТРАНСПОРТУ» З МЕТОЮ ВИЗНАЧЕННЯ ТВОРЧОГО ПОТЕНЦІАЛУ УЧНІВ 31
  11. В чому полягає економічне значення пільгової (нульової) ставки податку на додану вартість?
  12. Вади розвитку у дітей, діагностика,лікувальна тактика та надання екстреної медичної допомоги.

Тема: Показівники.

Динамічні структури - структури даних, розмір яких (об'єм пам'яті, що вони займають) може змінюватись у процесі виконання програми.

Для організації таких структур використовуються динамічні змінні, які створюються та знищуються в процесі виконання програми.

Характеризуються:

1. Ці змінні явно не описуються, до них неможливо звернутись за допомогою ідентифікатора.

2. Пам'ять для цих змінних не виділяється під час формування коду програми. Вона виділяється у спеціальній області оперативної пам'яті - heap-області (динамічній пам'яті) - тільки під час виконання програми (звідки і назва - динамічні змінні).

3. Доступ до таких змінних виконується за допомогою показівників (чи посилань), які стають активними після визначення динамічного об'єкту та містять адресу у вигляді <сегмент>:<зміщення>

Показівники можуть містити будь-яку адресу: статичних даних, фрагменту коду програми, стеку і т.і.).

 

Тип показівник

Type <ідентифікатор>=^<базовий тип>;

<базовий тип> - визначає тип елементів, на які буде вказувати показівник

Тип показівник - визначає множину значень дискретних змінних визначенного типу, на які може посилатись відповідний показівник.

Опис базового типу не обов'язково повинен передувати опису показівника, але повинен міститись у тому ж розділі описування типів.

Звернутись до динамічних змінних можна тільки через показівник (а не через ідентифікатор):

<показівник>^

 

Вбудовані засоби

¨ Існує зарезервоване константне значення, пов'язане з 'пустим посиланням', яке має ідентифікатор:

NIL ~ <#0>:<#0>

Цей показівник сумісний з будь-яким іншим показівником (будь-якого базового типу), тобто змінній будь-якого типу показівник може бути надане значення NIL.

¨ Паскаль має вбудований тип показівника pointer

Це нетипізований показівник (тобто, не пов'язаний ні з жодним базовим типом і внаслідок цього сумісний з будь-яким типом показівника). Змінній типу pointer може бути надане значення змінної будь-якого типу показівника.

Але звернення до значення такої змінної (i^) може викликати помилку. Використовується для описування формальних параметрів типу показівник у процедурах та функціях.

¨ Константа типу показівник може містити тільки значення NIL

 

Надання значення змінній-показівнику

¨ Н адання показівнику значення іншого показівника.

¨ З а допомогою спеціальної процедури, що зв'язує з динамічною змінною область пам'яті у heap-області.

NEW(var p:pointer);

- створює нову динамічну змінну та встановлює на неї показівник.

Фактичний параметр - показівник будь-якого типу. Розмір виділяємого блоку пам'яті відповідає розміру, потрібному для розміщення змінної базового типу (на який посилається показівник).

Посилання на створену у такий спосіб змінну - через відповідний показівник. Якщо при виділенні пам'яті для змінної не вистачило місця - виникає помилка.

¨ З а допомогою безпосереднього надання показівнику припустимого значення адреси:

1) Використання оператора @

@ - унарний оператор, що повертає адресу статичної змінної, процедури чи функції, сумісну з типом NIL (тобто з любим типом показівника):

a) використання для змінної - повертає адресу цієї змінної у вигляді <сегмент>:<зміщення>

@<ідентифікатор змінної> <показівник>

b) використання для процедури дозволяє отримати точку входу - адресу, з якої починається її виконання. Використовується для надання керування відповідній процедурі чи функції

@<ідентифікатор процедури, функції> <показівник на точку входу>

2) addr(x):pointer;

x - будь-яка змінна чи ідентифікатор процедури/функції. Результат - показівник на x, сумісний із всіма типами показівників.

3) ptr(<сегмент>,<зміщення>:word):pointer;

функція перетворює надану у вигляді <сегмент>:<зміщення> адресу у показівник


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)