type ref = ^integer;var p, q: ref;Пусть p^=5 и q=p.Что будет

Type ref = ^integer;
var p, q: ref;
Пусть p^=5 и q=p.
Что будет выдано на печать в итоге выполнения последующих операторов?
q^:=p^+1;
if plt;gt;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



, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт