Language: 
Русский
English
The @ ("at") operator: Pointer operation
 You can create a pointer to a variable with the @ operator.
   Operator Operation         Operand types        Result type
   @        Pointer formation Variable reference,  Pointer (same as nil)
                              procedure identifier,
                              or function identifier
@ is a unary operator. Special rules apply to use of the @ operator with a
The type of the value is the same as the type of nil, so it can be assigned to any pointer variable.
@ with a variable
Using @ with an ordinary variable (not a parameter) is not complicated. For example, given these declarations:
   type
     TwoChar = array[0..1] of Char;
   var
     Int: Integer;
     TwoCharPtr: ^TwoChar;
this statement causes TwoCharPtr to point to Int:
TwoCharPtr := @Int;
TwoCharPtr^ becomes a reinterpretation of the value of Int, as if it were an array[0..1] of Char.
@ with a value parameter
Applying @ to a formal value parameter results in a pointer to the stack location containing the actual value.
For example, suppose Fred is a formal value parameter in a procedure and FredPtr is a pointer variable.
If the procedure executes this statement
FredPtr := @Fred;
FredPtr^ references Fred's value.
However, FredPtr^ does not reference Fred itselfit references the value that was taken from Fred and stored on the stack.
@ with a variable parameter
Applying @ to a formal variable parameter results in a pointer to the actual
parameter (the pointer is taken from the stack).
The type of resulting pointer value is controlled through the $T compiler directive.
For example, suppose the following:
  - One is a formal variable parameter of a procedure,
  - Two is a variable passed to the procedure as One's actual parameter
  - OnePtr is a pointer variable.
If the procedure executes this statement
OnePtr := @One;
OnePtr is a pointer to Two, and OnePtr^ is a reference to Two itself.
@ with a procedure or function
You can apply @ to a procedure or a function to produce a pointer to its entry point. Turbo Pascal does not give you a mechanism for using such a pointer.
The only use for a procedure pointer is to pass it to an assembly language routine or to use it in an inline statement.
@ with a method
You can apply @ to a qualified method identifier to produce a pointer to the method's entry point.

 Правила форума
Правила форума 
  The @ ("at") operator: Pointer operation
 The @ ("at") operator: Pointer operation
 ::
 ::
       ::
 ::
       ::
 ::
       
     