VB指针教程1

作者在 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指针教程 | 阅读 1254 次
文章评论,共0条
游客请输入验证码
浏览27863次