操作符 @ (Address Of)
 
返回字符串文字,变量,对象或过程的地址

语法

Declare Operator @ ( ByRef rhs As T ) As T Pointer

用法

result = @ rhs

参数

rhs
字符串文字,变量,对象或过程来检索地址。
T
任何标准用户自定义或过程类型。

返回值

返回右侧(rhs )操作数的地址。

说明

操作符 @(地址)返回其操作数的内存地址。

当操作数类型为String时,返回内部字符串描述符的地址。使用操作符 Strptr(String pointer)来检索字符串数据的地址。

操作数不能是数组,但可能是数组元素。例如,"@myarray(0)"返回地址"myarray(0)".

对于用户定义的类型,此运算符可能会重载。

例子

'该程序演示了@运算符的使用。

Dim a As Integer
Dim b As Integer

Dim addr As Integer Ptr

a = 5   '这里我们将值5和10分别放在a和b中。
b = 10

'在这里,我们打印变量的值,然后将它们存储在内存中。
Print "A中的值为";a;"但指向a的指针是";@a
Print "B中的值是";b;"但指向b的指针是";@b

'现在,我们将以上面的整数ptr,并使用@来放置一个值。
'请注意,*将检查ptr中的值,就像@检查ptr
'对于正常变量。

addr = @a

Print "指针addr现在将内存地址指向a,值:";*addr

addr = @b

Print "指针addr现在将内存地址指向b,value:";*addr


'该程序演示了如何使用@符号
'创建指向子例程的指针。

Declare Sub mySubroutine ()

Dim say_Hello As Sub() 

say_Hello = @mySubroutine   '我们告诉say_Hello指向我的子程序。
                            'sub()数据类型在这里用作指针。

say_Hello() '现在我们可以像我的子程序一样运行say_Hello。

Sub mySubroutine
    Print "hi"
End Sub


方言差异

  • -lang qb 方言中,此运算符不能重载。

与QB差别

  • 新的FreeBASIC

参考