SlideShare a Scribd company logo
ТИП ДАННЫХ POINTER
Множество значений предопределенного типа pointer
(указатель) состоит из адресов и специального
значения nil.
К значениям типа данных pointer можно применять
операции: = и <>. Значения этого типа не могут быть
считаны с клавиатуры или выведены на экран.
Переменная типа pointer вводится описанием вида:
var р: pointer;
Следующая программа показывает использование
переменных типа pointer для временного запоминания
значений переменных ссылочного типа.
Program P134;
{ Тип данных pointer }
var p : pointer;
i, j : ^integer;
x, у : ^real;
r, s : ^string;
begin
{p будет указывать на динамическую
переменную типа
integer )
new(i); i^:=l;
p:=i;
new(i); i^:=2;
j :=p;
Writeln(‘A=', ^A); 1 на экран выдается
1}
{ p будет указывать на
динамическую переменную типа
real }

new(х); х^:=1;
р:=х;
new(x); х^:=2;
у:=р;
writeln('у^=', у^);
(на экран выдается
1.0000000000Е+0 }
{ р будет указывать на
динамическую переменную
string }
new(r); r^:='AAA';
p:=r;
new(r); r^:='ВВВ';
s:=p;
writeln('s^=', s^) ; 1 на экран
выдается AAA }
end.
распределение внутренней памяти
В Turbo PASCAL динамические переменные заносятся в
специальную область внутренней памяти, называемой
heap (куча). Адрес начала этой области, называемый
базовым адресом, заносится в предопределенную
переменную HeapOrg типа pointer.
Переменная HeapPtr типа pointer содержит адрес первой
свободной зоны, называемой вершиной heap-a
Для распределения внутренней
памяти используются процедуры:
 mark (p)

где p является переменной типа pointer. Процедура
запоминает адрес вершины из HeapPtr в
переменную р.
 release (р)
Эта процедура переводит адрес вершины на
позицию,
зарегистрированную ранее процедурой mark:
значение, содержащееся в переменной р типа
pointer, заносится в указатель HeapPtr.
Алгоритм Распределение области
памяти
1) с помощью процедуры mark запоминается адрес
вершины;
2) с помощью процедуры new создаются динамические
переменные;
3) созданные динамические переменные используются;
4) когда динамические переменные уже не нужны,
пространство, занимаемое ими в области heap,
освобождается с помощью
процедуры release.
Вопросы и упражнения
Из чего состоит множество значений типа данных
роinter? Какие операции можно применять к этим
значениям?
2.
Прокомментируйте следующую программу:
Program PI3.6;
{Ошибка }
var i : ^integer;
j, k : integer;
p : pointer;
begin
new(i); i^:=1;
p:=i;
new(i); i^:=2;
j:=i^; k:=р^;
writeln('j+k=', j+k);
end.
1.
Вопросы и упражнения
5. Запустите следующие программы. Объясните результаты,
выводимые на экран.
Program PI37;
var i, j, k, m, n : ^integer;
p : pointer;
begin
{создание переменных i^, j^, k^}
new(i); new(j); new(k);
i^:=1; j^:=2; k^:=3;
p:=j; {p сохраняет адрес из j }
{уничтожение переменной j^ и создание переменной m }
dispose(j); new(m); m^:=4;j:=p; {восстановление адреса из j }
writeln ('i^=', ^i, ‘j^=', ^j , ‘k^=', ^k,);
{уничтожение переменной m^ и создание переменной n^ }
dispose(m); new(n); n^:=5;
writeln ('i^=', ^i, ‘j^=', ^j , ‘k^=', ^k,);
End.
Вопросы и упражнения
Program PI38;
var i, j, k, m : ^integer;
begin
{создание переменных i^ и j ^ }
new(i); new(j);
i^:=1; j^:=2;
{освобождение области heap }
release(HeapOrg);
{создание переменных: к^ и m^ }
new(к); new(m);
K^:=l; m^:=2;
writeln(k^=', k^, ' m^=', m^);
i^:=3; j^:=4;
writeln(k^=', k^, ' m^=', m^);
end.

More Related Content

PPT
PPT
PPT
Циклы
PPT
PDF
5.4 Ключевые слова static и inline
Циклы
5.4 Ключевые слова static и inline

What's hot (20)

PPTX
ПРОЦЕДУРЫ
PPTX
Prezentatsia
PPTX
Использование алгоритмов для решения задач
PPT
Огранизация ввода и вывода данных
PPT
Презентация на тему: Программирование ветвлений на QBasic
PPTX
использование линейных алгоритмов для решения задач
PPTX
использование линейных алгоритмов для решения задач
PPTX
презентация Microsoft power point
PPTX
Ispolzovanie lineynykh algoritmov_dlya_reshenia_z
PPTX
использование линейных алгоритмов для решения задач
PPTX
использование линейных алгоритмов для решения задач
PPTX
C language lect_07_introduction
PPTX
циклические алгоритмы
PPT
Программирование циклических алгоритмов
PPTX
использование линейных алгоритмов для решения задач
DOCX
Matlab: Вычисление производной
PPTX
C language lect_06_introduction
PPTX
презентация Microsoft power point
DOC
Matlab: Вычисление предела
PDF
3.1 Структуры
ПРОЦЕДУРЫ
Prezentatsia
Использование алгоритмов для решения задач
Огранизация ввода и вывода данных
Презентация на тему: Программирование ветвлений на QBasic
использование линейных алгоритмов для решения задач
использование линейных алгоритмов для решения задач
презентация Microsoft power point
Ispolzovanie lineynykh algoritmov_dlya_reshenia_z
использование линейных алгоритмов для решения задач
использование линейных алгоритмов для решения задач
C language lect_07_introduction
циклические алгоритмы
Программирование циклических алгоритмов
использование линейных алгоритмов для решения задач
Matlab: Вычисление производной
C language lect_06_introduction
презентация Microsoft power point
Matlab: Вычисление предела
3.1 Структуры
Ad

Viewers also liked (8)

DOCX
документ Microsoft office_word
DOCX
Baza de date relatioala
PDF
Manualul profesorului
PPTX
Tipul de date pointer
PPT
Structuri De Date Alocate Dinamic
PPT
презентация Microsoft office_power_point_(3)[1]
PPTX
Sir de caractere in turbo pascal
PPT
Analiza algoritmilor. Masurarea volumului
документ Microsoft office_word
Baza de date relatioala
Manualul profesorului
Tipul de date pointer
Structuri De Date Alocate Dinamic
презентация Microsoft office_power_point_(3)[1]
Sir de caractere in turbo pascal
Analiza algoritmilor. Masurarea volumului
Ad

Similar to Тип данных Pointer (7)

PPT
лабораторная работа №4
PDF
C++ Базовый. Занятие 05.
PDF
C++ Базовый. Занятие 06.
PPTX
Algo 00
PPTX
Chislovye tipy dannykh_i_ikh_ispolzovanie_v_vba
PPTX
01_ДинамическиеСтccруктурыДанных(+).pptx
PPT
01 линейные структуры данных
лабораторная работа №4
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 06.
Algo 00
Chislovye tipy dannykh_i_ikh_ispolzovanie_v_vba
01_ДинамическиеСтccруктурыДанных(+).pptx
01 линейные структуры данных

More from Colegiul de Industrie Usoara (20)

PPTX
Analiza chestionarelor absolventilor grupelor M
PPTX
Analiza chestionarelor absolventilor grupelor F
PPTX
Analiza chestionarelor absolventi MT
PPTX
Darea de seama a catedrei Stiinte reale 2017 2018
PPTX
Raport privind vizita de lucru în România 29.06.17
PPTX
Raport de autoevaluare. Carauș V. 04.07.2017
PPT
Aspecte teoretice evaluarea externa 13.03.17
PPTX
Diseminarea bunelor practice 22.05.17
PDF
Orar profesori 1.09.2017
PPTX
понятия и концепты о данных и о базах данных
PPTX
72330 ,,Modelarea, proiectarea şi tehnologia confecţiilor din ţesături”
PPTX
Modelarea și tehnologia tricotajelor
PPTX
Masini si aparate
PPTX
Frizerie și cosmetică
PPTX
Filatura si tesatorie
PPTX
формы и отчеты
PPTX
метод хорд
PPTX
PPTX
Переменный ток
Analiza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventi MT
Darea de seama a catedrei Stiinte reale 2017 2018
Raport privind vizita de lucru în România 29.06.17
Raport de autoevaluare. Carauș V. 04.07.2017
Aspecte teoretice evaluarea externa 13.03.17
Diseminarea bunelor practice 22.05.17
Orar profesori 1.09.2017
понятия и концепты о данных и о базах данных
72330 ,,Modelarea, proiectarea şi tehnologia confecţiilor din ţesături”
Modelarea și tehnologia tricotajelor
Masini si aparate
Frizerie și cosmetică
Filatura si tesatorie
формы и отчеты
метод хорд
Переменный ток

Тип данных Pointer

  • 2. Множество значений предопределенного типа pointer (указатель) состоит из адресов и специального значения nil. К значениям типа данных pointer можно применять операции: = и <>. Значения этого типа не могут быть считаны с клавиатуры или выведены на экран. Переменная типа pointer вводится описанием вида: var р: pointer;
  • 3. Следующая программа показывает использование переменных типа pointer для временного запоминания значений переменных ссылочного типа. Program P134; { Тип данных pointer } var p : pointer; i, j : ^integer; x, у : ^real; r, s : ^string; begin {p будет указывать на динамическую переменную типа integer ) new(i); i^:=l; p:=i; new(i); i^:=2; j :=p; Writeln(‘A=', ^A); 1 на экран выдается 1} { p будет указывать на динамическую переменную типа real } new(х); х^:=1; р:=х; new(x); х^:=2; у:=р; writeln('у^=', у^); (на экран выдается 1.0000000000Е+0 } { р будет указывать на динамическую переменную string } new(r); r^:='AAA'; p:=r; new(r); r^:='ВВВ'; s:=p; writeln('s^=', s^) ; 1 на экран выдается AAA } end.
  • 4. распределение внутренней памяти В Turbo PASCAL динамические переменные заносятся в специальную область внутренней памяти, называемой heap (куча). Адрес начала этой области, называемый базовым адресом, заносится в предопределенную переменную HeapOrg типа pointer. Переменная HeapPtr типа pointer содержит адрес первой свободной зоны, называемой вершиной heap-a
  • 5. Для распределения внутренней памяти используются процедуры:  mark (p) где p является переменной типа pointer. Процедура запоминает адрес вершины из HeapPtr в переменную р.  release (р) Эта процедура переводит адрес вершины на позицию, зарегистрированную ранее процедурой mark: значение, содержащееся в переменной р типа pointer, заносится в указатель HeapPtr.
  • 6. Алгоритм Распределение области памяти 1) с помощью процедуры mark запоминается адрес вершины; 2) с помощью процедуры new создаются динамические переменные; 3) созданные динамические переменные используются; 4) когда динамические переменные уже не нужны, пространство, занимаемое ими в области heap, освобождается с помощью процедуры release.
  • 7. Вопросы и упражнения Из чего состоит множество значений типа данных роinter? Какие операции можно применять к этим значениям? 2. Прокомментируйте следующую программу: Program PI3.6; {Ошибка } var i : ^integer; j, k : integer; p : pointer; begin new(i); i^:=1; p:=i; new(i); i^:=2; j:=i^; k:=р^; writeln('j+k=', j+k); end. 1.
  • 8. Вопросы и упражнения 5. Запустите следующие программы. Объясните результаты, выводимые на экран. Program PI37; var i, j, k, m, n : ^integer; p : pointer; begin {создание переменных i^, j^, k^} new(i); new(j); new(k); i^:=1; j^:=2; k^:=3; p:=j; {p сохраняет адрес из j } {уничтожение переменной j^ и создание переменной m } dispose(j); new(m); m^:=4;j:=p; {восстановление адреса из j } writeln ('i^=', ^i, ‘j^=', ^j , ‘k^=', ^k,); {уничтожение переменной m^ и создание переменной n^ } dispose(m); new(n); n^:=5; writeln ('i^=', ^i, ‘j^=', ^j , ‘k^=', ^k,); End.
  • 9. Вопросы и упражнения Program PI38; var i, j, k, m : ^integer; begin {создание переменных i^ и j ^ } new(i); new(j); i^:=1; j^:=2; {освобождение области heap } release(HeapOrg); {создание переменных: к^ и m^ } new(к); new(m); K^:=l; m^:=2; writeln(k^=', k^, ' m^=', m^); i^:=3; j^:=4; writeln(k^=', k^, ' m^=', m^); end.