русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Вказівники


Дата додавання: 2014-04-22; переглядів: 1315.


Вказівники являють собою змінну цілого типу, що інтерпретується як адреса байту пам’яті, яка містить певний елемент даних. Цим елементом може бути змінна, константа, адреса іншої змінної т.ін.

Звичайно, працюючи з деякою змінною, розробник не цікавиться розміщенням в пам’яті змінних і констант. До них можна просто звернутися за іменем, при цьому Pascal точно знає, де шукати ці змінні і константи. Припустімо, наша програма містить в розділі оголошень такий рядок:

VAR Number:integer;

 

Цим рядком ми вказуємо компілятору на необхідність зарезервувати область в пам’яті, на яку ми будемо посилатися по імені Number.

Адресу, за якою розміщена змінна Number, в пам’яті можна визначити за допомогою оператора @

P1:=@Number;

чи за допомогою функції Addr.

В результаті виконання операції P1:=@Number; в змінну P1 буде записана адреса змінної Number.

Часто в процесі написання програми виникають ситуації, коли без застосування вказівників неможливо обійтися. Так трапляється, якщо:

1. Програма працює з великим об’ємом даних (більше 64 Кб)

2. Програма під час пам’яті використовує дані, об’єм пам’яті для збереження яких зарані невідомий (так часто трапляється при роботі з масивами)

3. В програмі використовується буфер пам’яті для тимчасового зберігання даних.

4. Ми використовуємо структуровані змінні, тобто записи, масиви чи множини, які мають різну структуру.

5. Програма використовує динамічні структури даних (стеки, однозв’язні і двозв’язні списки, черги, бінарні дерева).

 

Вказівники у Pascal-i можуть зв’язуватися з певним типом даних (типізовані вказівники) чи не зв’язуватися (нетипізовані вказівники). Ще для називання змінних цього типу використовуються терміни: посилання і reference.

 

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

Для оголошення типізованого вказівника звичайно використовується символ ^, який розміщується безпосередньо перед відповідним типом даних, наприклад:

TYPE

P1Ptr=^INTEGER;

VAR

P1:^INTEGER;

В загальному випадку:

TYPE

ІмяВказівника=^ІмяБазисногоТипу

де ІмяБазисногоТипу – будь-який ідентифікатор типу. В результаті такого визначення створені потім вказівники будуть вказувати на об’єкти базового типу, визначаючи тим самим динамічні змінні базового типу. Зараз нас особливо цікавлять вказівники на об’єкти. Синтаксис такого вказівника наступний:

TYPE

ObjType=OBJECT

END;

ObjPtr=^ObjType

 


<== попередня лекція | наступна лекція ==>
Переваги і недоліки віртуальних методів | Нетипізовані вказівники


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн