Задать вопрос
6 июля, 19:40

Type ref = ^integer;

var p, q: ref;

Пусть p^=5 и q=p.

Что будет выдано на печать в результате выполнения следующих операторов?

q^:=p^+1;

if pq then p:=nil else q^:=10;

if q^=10 then begin p:=q; q^:=20; end;

writeln (p^) ;

+3
Ответы (1)
  1. 6 июля, 21:22
    0
    Если 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
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Type ref = ^integer; var p, q: ref; Пусть p^=5 и q=p. Что будет выдано на печать в результате выполнения следующих операторов? q^:=p^+1; if ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы