作者在 2010-05-02 13:05:10 发布以下内容
演示工程代码下载:http://bbs.bccn.net/viewthread.php?tid=305122&extra=page%3D1&frombbs=1
'先理解下变量的地址与指向这个地址的值。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 Form_Click()
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
'演示一个非常简单的指针操作,让大家在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 Form_Click()
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