Что будет выдано на печать в результате выполнения следующих операторов? - Pascal
Формулировка задачи:
type ref = ^integer; var p, q: ref;
p^:=q^; if p=q then p:=nil else if p^=q^ then q:=p; if p=q then q^:=4; writeln(p^);
Решение задачи: «Что будет выдано на печать в результате выполнения следующих операторов?»
textual
Листинг программы
type ref = ^integer; var p, q: ref; pp, qq: Integer; begin pp:=5; qq:=3; p:=@pp; q:=@qq; p^:=q^; if p=q then p:=nil else if p^=q^ then q:=p; if p=q then q^:=4; writeln(p^); end.
Объяснение кода листинга программы
- Создается тип данных
ref, который представляет собой указатель на целое число. - Создаются две переменные
pиqтипаref. - Создаются две переменные
ppиqqтипаInteger. - Значения переменных
ppиqqприсваиваются переменнымpиqсоответственно. - Переменные
pиqуказывают на те же самые объекты в памяти, поэтому они равны. - Если
pиqравны, то переменнойpприсваивается значениеnil. - Если
pиqне равны, но их указатели указывают на одно и то же место в памяти, то переменнойqприсваивается значениеp. - Если предыдущие условия не выполняются, то переменной
qприсваивается значение4. - Выводится значение переменной
p^, которая является ссылкой на объект в памяти.