По паскалю вообще не бум бум, но решить задачку нужно. А тут ещё и указатели.
В общем, кто может, подскажите, какое значение выведет данный код.
p^:=3; q^:=2;
p^:=q^;
if p=q then p:=nil else if p^=q^ then q:=p;
if p<>q then q^:=8;
writeln (p^);
p^ - означает обращение не к адресу, а к значению по этому адресу.
Сначала p и q владеют разными знаниями. Потом оба становится равным 2.
Т.к. q не равно p, то если их значения равны (а они равны по 2), то q теперь имеет такой же адрес как у p.
Дальше их адреса совпадают. Итого, ответ 2.