|
- '先理解下变量的地址与指向这个地址的值。xx省xx市xx街xx号就是一个地址,
- '指向这个地址的值就是这个地址就有什么。比如这个地址是张三家的地址,
- '张三的家有什么呢?这个有什么就是这个地址所指向的值。
- 'VB没用操作指针的语言特性,因此需要通过WinAPI函数来进行操作,下面我们将
- '演示一个非常简单的指针操作,让大家在VB使用指针有个基本的了解。
- 'CopyMemory函数参数
- 'CopyMemory是WinAPI函数,为了演示我把其修改成了两个版本,
- '版本1:CopyMemory1
- '版本2:CopyMemory2
- '版本1Destination及Source的参数是按照引用传递的(ByRef)
- '版本2Destination及Source的参数是按照值传递的(ByVal)
- '参数说明:
- 'Destination
- '要复制内存块的目的地址?
- 'Source
- '要复制内存块的源地址?
- 'Length
- '指定要复制内存块的大小,单位为字节
- '返回值
- '该函数为VOID型,没有返回值。
- Private Declare Sub CopyMemory1 Lib "kernel32" Alias "RtlMoveMemory" _
- (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
- Private Declare Sub CopyMemory2 Lib "kernel32" Alias "RtlMoveMemory" _
- (ByVal Destination As Any, ByVal Source As Any, ByVal Length As Long)
- '在Basic语言演变成QBasic,然后到Visual Basic之前,VarPtr函数就已经存在了。
- '开始,这个函数存在于VB运行库1.0版中。VarPtr函数的作用获取变量的地址
- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
- Dim long1 As Long
- Dim long2 As Long
- long1 = 10
- '版本1的CopyMemory
- CopyMemory1 long2, long1, 4
- MsgBox long2
- '版本2的CopyMemory
- Dim long3 As Long
- CopyMemory2 VarPtr(long3), VarPtr(long1), 4
- MsgBox long3
- End Sub
复制代码 |
|