Next: 6.6 Operators
Up: 6. Expressions
Previous: 6.4 Value typecasts
The address operator @ returns the address of a variable, procedure
or function. It is used as follows:
Address factor
The @ operator returns a typed pointer if the $T switch is on.
If the $T switch is off then the address operator returns an untyped
pointer, which is assigment compatible with all pointer types. The type of
the pointer is ^T, where T is the type of the variable
reference.
For example, the following will compile
Program tcast;
{$T-} { @ returns untyped pointer }
Type art = Array[1..100] of byte;
Var Buffer : longint;
PLargeBuffer : ^art;
begin
PLargeBuffer := @Buffer;
end.
Changing the {$T-} to {$T+} will prevent the compiler from
compiling this. It will give a type mismatch error.
By default, the address operator returns an untyped pointer.
Applying the address operator to a function, method, or procedure identifier
will give a pointer to the entry point of that function. The result is an
untyped pointer.
By default, you must use the address operator if you want to assign a value
to a procedural type variable. This behaviour can be avoided by using the
-So or -S2 switches, which result in a more compatible Delphi or
Turbo Pascal syntax.
root
1999-06-10