Возвращает адрес строкового литерала, переменной, объекта или процедуры
Синтаксис
Использование
result = @ rhs
Параметры
rhs
Строковый литерал, переменная, объект или процедура для
получения адреса.
T
Возвращаемое значение
Возвращает адрес операнда (rhs).
Описание
Оператор @ (Адрес из) возвращает адрес памяти своего
операнда.
Когда операнд имеет тип
String,
возвращается адрес внутреннего дескриптора строки. Используйте
Оператор Strptr (Строковой указатель)
для получения адреса данных строки.
Операнд не может быть массивом, но может быть элементом массива. Например,
"@myarray(0)"
возвращает адрес
"myarray(0)".
Этот оператор может быть перегружен для пользовательских типов.
Пример
'Эта программа демонстрирует использование оператора @.
Dim a As Integer
Dim b As Integer
Dim addr As Integer Ptr
a = 5 'Здесь
мы размещаем значения 5 и 10 в А и В, соответственно.
b = 10
'Здесь мы выводим значения переменных, и тот адрес где в
памяти они хранятся.
Print "The value in A is ";a;" but the pointer to a is ";@a
Print "The value in B is ";b;" but the pointer to b is ";@b
'Теперь, мы будем использовать переменную
с типом INTEGER PTR , описанную выше, и
использовать оператор @ , чтобы разместить значение в нее.
'Обратите внимание, что * будет проверять значение в ptr, так
же, как @ проверяет ptr
'для обычной переменной.
addr = @a
Print "The pointer addr is now pointing at the memory address to a, value: ";*addr
addr = @b
Print "The pointer addr is now pointing at the memory address to b, value: ";*addr
'Эта программа демонстрирует, как можно использовать оператор @
'для создания указателя на процедуру.
Declare Sub mySubroutine ()
Dim say_Hello As Sub()
say_Hello = @mySubroutine 'Мы
присваиваем say_Hello адрес mySubroutine.
'Тип
данных sub() действует как указатель здесь.
say_Hello() 'Теперь
мы можем запустить say_Hello так же как и mySubroutine.
Sub mySubroutine
Print "hi"
End Sub
Различия диалектов
- В диалекте -lang qb, этот
оператор не может быть перегружен.
Отличия от QB
См. также