|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Надання значення змінній-показівникуТема: Показівники. Динамічні структури - структури даних, розмір яких (об'єм пам'яті, що вони займають) може змінюватись у процесі виконання програми. Для організації таких структур використовуються динамічні змінні, які створюються та знищуються в процесі виконання програми. Характеризуються: 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; функція перетворює надану у вигляді <сегмент>:<зміщення> адресу у показівник Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |