8_Динамика3
1. Динамические переменные часть 3
12. type link=^item; item=record v:link; g:integer; end; var p:link;
p2
3. Тип link – указатель, указывающий на область памяти для записи туда переменных типа item, еще не описанного (исключение из
правилаязыка Паскаль: сначала описать, затем
использовать)
Тип item – запись с двумя полями:
1 поле g – статическая переменная типа integer
2 поле v- динамическая переменная (указатель
на запись такого же типа link)
3
4. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p);
Адресная частьp
Часть под значение
ул.Мира
p^
ул.Мира
4
5. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p);
Адресная частьp
ул.Мира
Часть под значение
p^.v
p^.g
ул.Мира
p^
5
6. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1;
p^.vp
1
p^
p^.g
6
7. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v);
p^.vp
p^.v^
1
p^.g
p^
7
8. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v);
p^.vp
p^.v^
p^.v^.v
1
p^
p^.g
p^.v^.g
8
9. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v); p^.v^.g:=2;
p^.vp
p^
1
p^.g
p^.v^.v
p^.v^
2
p^.v^.g
9
10. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v); p^.v^.g:=2; new(p^.v^.v);
pp^
p^.v^
p^.v
p^.v^.v
1
2
p^.g
p^.v^.g
p^.v^.v^
10
11. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v); p^.v^.g:=2; new(p^.v^.v);
p^p
p^.v
p^.v^
p^.v^.v
1
2
p^.g
p^.v^.g
p^.v^.v^
p^.v^.v^.v
p^.v^.v^.g
11
12. type link=^item; item=record v:link; g:integer; end; var p:link; begin new(p); p^.g:=1; new(p^.v); p^.v^.g:=2; new(p^.v^.v);
p^.v^.v^.g:=3;p^
p
p^.v
p^.v^
p^.v^.v
1
2
p^.g
p^.v^.g
p^.v^.v^
p^.v^.v^.v
3
p^.v^.v^.g
12
13.
При таком обозначении нельзя обратиться к полю такойзаписи
P^^.V
p^
p^^
p^^^
p
13