Pointers
 
数据类型的值是内存中的地址。

宣言

指针是变量,其值是内存中的地址,它们被称为“指向”这个内存。指向的数据类型取决于指针的类型(Integer Pointer指向Integer数据)。指针与任何其他变量一样声明,后缀为“pointer”或“ptr”。

访问指向数据

指针指向的数据可以使用操作符 *(Value of)访问。该运算符返回对其操作数指向的数据的引用。下列,

Dim myInteger As Integer = 10
Dim myPointer As Integer Pointer = @myInteger
*myPointer = 20
Print myInteger

定义了一个名为myIntegermyInteger变量和一个名为myPointerInteger指针,指向内存中存储myInteger的位置。操作符 @(地址)用于检索myInteger的地址。20的值赋值给myPointer指向的位置 - myInteger的地址或@myInteger.更改*myPointer直接影响myInteger的值(表达式“*myPointer”与“myInteger”相同)。

指向用户定义类型的指针

指向用户定义类型的指针与所有其他指针一样被定义和使用。访问类型的成员需要以下两种方法之一:

Type myType
    a As Integer
    b As Double
End Type

Dim x As myType
Dim p As myType Pointer = @x

'' 1) dereference the pointer and use the member access operator:
(*p).a = 10
(*p).b = 12.34

'' 2) use the shorthand form of the member access operator:
Print p->a
Print p->b

第一种方法使用操作符 . (成员访问).该操作符从引用访问成员,因此首先取消引用指针。成员访问运算符具有比取消引用运算符更高的优先级,因此在使用成员访问操作符之前,需要括号来取消引用指针。

第二种方法使用操作符 -> (访问成员指针).该运算符从指针自动取消引用成员。这可以使代码更清晰一些,尽管这两种形式都产生相同的结果。

参考