program test;
type Ptr = ^Integer;
Foo = record a, b, c, d : Byte end;
PFoo = ^Foo;
var x, y : Ptr;
z : PFoo;
procedure PrintXY(n : Integer);
begin
WriteLn(n:4, '. x = ', x^:6, ', y = ', y^:6)
end;
procedure PrintZ(n : Integer);
begin
WriteLn(n:4, '. z = {', z^.a:6, ',', z^.b:6, ',', z^.c:6, ',', z^.d:6, '}');
end;
begin
x := New(Ptr); x^ := 0;
y := x;
z := New(PFoo); z^.a := 0; z^.b := 0; z^.c := 0; z^.d := 0;
PrintXY(1);
Inc(x, 1);
PrintXY(2);
x^ := 123;
PrintXY(3);
x := @z^;
PrintXY(4); PrintZ(4);
x^ := 123456;
PrintXY(5); PrintZ(5);
Dispose(y);
Dispose(z);
end.
cHJvZ3JhbSB0ZXN0OwoKdHlwZSBQdHIgPSBeSW50ZWdlcjsKICAgIEZvbyA9IHJlY29yZCBhLCBiLCBjLCBkIDogQnl0ZSBlbmQ7CiAgICBQRm9vID0gXkZvbzsKCnZhciB4LCB5IDogUHRyOwogICAgeiA6IFBGb287Cgpwcm9jZWR1cmUgUHJpbnRYWShuIDogSW50ZWdlcik7CmJlZ2luCiAgICBXcml0ZUxuKG46NCwgJy4geCA9ICcsIHheOjYsICcsIHkgPSAnLCB5Xjo2KQplbmQ7Cgpwcm9jZWR1cmUgUHJpbnRaKG4gOiBJbnRlZ2VyKTsKYmVnaW4KICAgIFdyaXRlTG4objo0LCAnLiB6ID0geycsIHpeLmE6NiwgJywnLCB6Xi5iOjYsICcsJywgel4uYzo2LCAnLCcsIHpeLmQ6NiwgJ30nKTsKZW5kOwoKYmVnaW4KICAgIHggOj0gTmV3KFB0cik7IHheIDo9IDA7CiAgICB5IDo9IHg7CiAgICB6IDo9IE5ldyhQRm9vKTsgel4uYSA6PSAwOyB6Xi5iIDo9IDA7IHpeLmMgOj0gMDsgel4uZCA6PSAwOwogICAgUHJpbnRYWSgxKTsKICAgIEluYyh4LCAxKTsKICAgIFByaW50WFkoMik7CiAgICB4XiA6PSAxMjM7CiAgICBQcmludFhZKDMpOwogICAgeCA6PSBAel47CiAgICBQcmludFhZKDQpOyBQcmludFooNCk7CiAgICB4XiA6PSAxMjM0NTY7CiAgICBQcmludFhZKDUpOyBQcmludFooNSk7CiAgICBEaXNwb3NlKHkpOwogICAgRGlzcG9zZSh6KTsKZW5kLg==
1. x = 0, y = 0
2. x = -18551, y = 0
3. x = 123, y = 0
4. x = 0, y = 0
4. z = { 0, 0, 0, 0}
5. x = -7616, y = 0
5. z = { 64, 226, 0, 0}