Оператор @ Pascal-Паскаль
Описание
@: Операция с указателем - Вы можете создавать указатель на переменную с помощью оператора @.
Оператор | Операция | Тип операндов | Тип результата |
---|---|---|---|
@ | Взятие адреса | Ссылка на переменную, идентификатор функции или процедуры | Pointer (как и NIL) |
Замечания:
"@" является унарным оператором. При использовании оператора "@" с процедурными переменными применяются специальные правила.
Тип результата такой же, как и у NIL, так что этот оператор может применяться для любых типов указателей.
@ с переменной:
Использование @ с обычной переменной не сложно. Например, для следующих объявлений:
Пример использования @ с обычной переменной:Var Int : Integer;
TwoCharPtr : ^TwoChar;
следующий оператор заставляет указатель TwoCharPtr указывать на Int:
Пример использования @:Указатель TwoCharPtr^ становится переобработкой значения Int, как будто это массив [0..1] типа Char.
@ с параметром:
Применение оператора @ к формальному параметру создает указатель на позицию стека, содержащую фактическое значение параметра.
Например, пусть Fred - формальный параметр, передаваемый в процедуру, а FredPtr - указательная переменная.
Если в процедуре выполняется такой оператор
Пример использования @:то FredPtr^ ссылается на значение параметра Fred.
Заметьте, что FredPtr^ не ссылается на саму переменную Fred, а только на значение, которое было получено из переменной Fred и сохранено в стеке.
@ с переменным параметром:
Применение оператора @ к формальному переменному параметру создает указатель на фактический параметр (указатель принимается из стека).
Тип возникающего в результате указателя управляется директивой компилятора $T.
Например, пусть:
- One - формальный переменный параметр процедуры,
- Two - переменная, передаваемая в процедуру, как фактический параметр One.
- OnePtr - указательная переменная.
Если в процедуре выполняется такой оператор
Пример использования @:то OnePtr указывает на Two, а OnePtr^ - ссылается на значение переменной Two.
@ с процедурой или функцией:
Вы можете применять оператор @ к процедуре или функции, чтобы получить указатель на ее точку входа. Turbo Pascal не дает вам механизм для использования такого указателя.
Единственое применение для указателя на процедуру может состоять в передаче его в ассемблерную подпрограмму или использовании его в операторе InLine.
@ с методом:
Вы можете применять оператор @ к идентификатору метода, чтобы получить указатель на точку входа метода.