Kiss456
12.08.2022 03:37

Type ref = ^integer; var p, q: ref; пусть p^=5 и q=p. что будет выдано на печать в результате выполнения следующих операторов? q^: =p^+1; if p< > q then p: =nil else q^: =10; if q^=10 then begin p: =q; q^: =20; end; writeln(p^);

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
HELP111111111111q
24.07.2020 20:29
Если q=p, то оба указателя ссылаются  на одно и то же место в памяти, т.е. значения p^ и q^ всегда будут одинаковы.
После p^=5 оба указателя будут ссылаться на 5.
q^:=p^+1 приведет к тому, что cсылка будет на 6, поэтому в первом if условие ложно и выполняется ветка else и оба указателя будут ссылаться на 10.
Во втором if условие истинно, поэтому выполняется ветка then. В ней присваивание p:=q ничего не меняет, поскольку оба указателя и так уже указывают на одно и то же место в памяти. А после q^:=20 в это место будет записана константа 20, поэтому при выводе p^ мы получаем значение 20.
ответ: 20
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота