1.2.76 $T or $TYPEDADDRESS : Typed address operator (@)

In the {$T+} or {$TYPEDADDRESS ON} state, the @ operator, when applied to a variable, returns a result of type ^T, if the type of the variable is T. In the {$T-} state, the result is always an untyped pointer, which is assignment compatible with all other pointer types.

For example, the following code will not compile:

{$T+}

Var
  I : Integer;
  P : PChar;

begin
  P:=@I;
end.

The compiler will give a type mismatch error:

testt.pp(8,6) Error: Incompatible types: got "^SmallInt" expected "PChar"

By default however, the address operator returns an untyped pointer.