русс | укр

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

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


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


Нетипізовані вказівники


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


Можна оголосити вказівник, не зв’язуючи його з конкретним типом даних. З цією метою використовується стандартний тип даних POINTER

VAR

P1:Pointer;

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

 

Операція розіменування

Основною операцією при роботі з вказівниками є розіменування. Суть її полягає в переході від вказівника до значення, на яке він вказує. Синтаксис цієї операції можна зрозуміти з прикладу:

program prob;

uses crt;

var I,j:integer;

ptri:^integer;

begin

i:=5;

ptri:=addr(i);

j:=ptri^;

writeln(‘j=’,j);

repeat until keypressed;

end.

 

Розіменувані вказівники на структури індексуются (у випадку масивів) чи поділяються на поля (записи, об’єкти) звичайним способом. Наприклад:

Pta^[i] – доступ до і-го елементу масиву

Ptrec^.поле – доступ до поля динамічного запису

ObjPtr^.Метод – доступ до методу динамічного об’єкта.

 

Присвоєння вказівників

Вказівнику можна присвоювати вміст іншого вказівника такого ж типу або нетипізованого вказівника, константу NIL (порожній вказівник), адресу об’єкта, визначену за допомогою функції addr. Наприклад, якщо ми оголосили такі вказівники:

Var

Pntr1,Pntr2:^Integer;

Pntr3:^Real;

Pntr:Pointer;

i:integer;

то присвоєння

Pntr1:=Nil;

Pntr1:=Pntr2;

Pntr2:=addr(i);

 

допустимі, а присвоєння

Pntr1:=Pntr3; - ні, оскільки ці змінні вказують на різні типи даних.

 

Виділення і вивільнення динамічної пам’яті


<== попередня лекція | наступна лекція ==>
Вказівники | Організація динамічної пам’яті


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