• 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^);

Ответы 1

  • Если 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
    • Автор:

      loserfjzg
    • 2 года назад
    • 1
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years