Использование операции @ для обычной переменной (не парамет-
ра) не вызывает никаких сложностей. Применение @ к ссылке на пе-
ременную возвращает указатель на переменную. Введем описания:
type
TwoChar = array[0..1] of char;
var
Int: integer;
TwoCharPtr: ^TwoChar;
тогда оператор:
TwoCharPtr := @Int;
приводит к тому, что TwoCharPtr для получения ссылки на
TwoCharPtr^ становится повторной интерпретацией значения Int, как
если бы оно было символьным массивом array[0..1].
Тип получаемого в результате указатель управляется директи-
вой компилятора $T: в состоянии {$T-} (по умолчанию) типом ре-
зультата будет Pointer. Другими словами, результат ом является
нетипизированный указатель, совместимый со всеми другими типами
указателей. В состоянии {$T+} типом результата будет ^T, где T -
тип ссылки на переменную. То есть тип результата будет совместим
со всеми другими указателями на тип этой переменной.
Примечание: К использованию операции @ с процедурным
типом применяются специальные правила. См. ниже раздел
"Процедурный типы в выражениях".