数组

Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" ( _
     ByRef Destination As Any, _
     ByRef Source As Any, _
     ByVal Length As Long)

 

 

Private Sub Form_Load()
    Dim a() As Long
    a = GetArrary()
   
    Debug.Print a(1)
   
   
   
End Sub


Private Function GetArrary() As Long()
    Dim pSA1 As Long
    Dim pSA2 As Long

    Dim tmp() As Long
   
    ReDim tmp(5)
    '.....可能在函数需要一个临时数组,但返回避免整体copy的方法

    '1 就使函数名隐藏数组

    '2 就是如下的方法
    tmp(1) = 2
   
   
   
    '交换数据
   
   CopyMemory pSA1, ByVal VarPtrArray(tmp), 4
   CopyMemory pSA2, ByVal VarPtrArray(GetArrary), 4
   
   CopyMemory ByVal VarPtrArray(tmp), pSA2, 4
   CopyMemory ByVal VarPtrArray(GetArrary), pSA1, 4
  
   
   
End Function

posted on 2009-08-07 22:22  杨志农  阅读(89)  评论(0)    收藏  举报

导航