Действия с указателями

Действие Результат
1. Объявление type Plnt= ^ integer; Var a, b: Plnt;
?
?

a?

b?

2. Выделение памяти New (a); New (b);  
адрес1
адрес2
 
 
a

b

адрес1
адрес2
 
 
адрес1
адрес2
 
 
адрес1
адрес2
 
 
адрес1
адрес2
 
 

3. Занесение информации a^:=1; b^:=2;

адрес1
адрес2
 
 

a a^

b b^

4. Копирование информации a^:=b^;

адрес1
адрес2
 
 

a a^ a^=b^

b b^ a<>b

5.
 

 
адрес2
адрес2
Копирование адреса

а) а:= b;

b) Dispose (a);

a:= b;

a a^ a^=b^

b b^ a=b

адрес2
адрес2
 
адрес2
адрес2
 
адрес2
адрес2
 
адрес2
адрес2
 
адрес2
адрес2
 

a

a^

b b^

6. Присваивание пустого адреса nil b:= nil

адрес2
nil
 

a a^

b

b^

Стандартные процедуры для работы с динамической памятью

Имя и параметры Типы параметров Действие
New(p) p - типизированный указатель выделяет динамическую память равную размеру типа, на который указывает p, и возвращает указатель на нее в переменной p
Dispose(p) p - типизированный указатель освобождает динамическую память по указателю p, ранее выделенную процедурой New
GetMem(p,n) p - указатель любого типа, n - integer выделяет динамическую память размера n байт и возвращает указатель на нее в переменной p
FreeMem(p) p - указатель любого типа освобождает динамическую память по указателю p, ранее выделенную процедурой GetMem

Линейные списки -это данные динамической структуры, которые представляют собой совокупность линейно связанных однородных элементов, и для которых разрешается добавлять элементы между любыми двумя другими, и удалять любой элемент.

Кольцевые списки -это такие же данные, как и линейные списки, но имеющие дополнительную связь между последним и первым элементами списка.

Стек -это частный случай линейного односвязного списка, для которого разрешено добавлять и удалять элементы только с одного конца списка, который называется вершиной (головой) стека.

Для организации связи между элементами динамической структуры данных требуется, чтобы каждый элемент содержал кроме информационных значений, как минимум один указатель. В качестве элементов таких структур необходимо использовать записи, которые могут объединять в единое целое разнородные элементы.

Схематично такую структуру данных можно показать следующим образом:

Inf
Link
Inf
Link
Inf
Link


Inf
Link
Inf
Link
Inf
Link
Type T = ^ Rec;

Rec = record

Inf: integer;

Link: T

End;

Var P, Q: T;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow