|
liucqa 发表于 2013-3-31 18:00
九、关于指针:谈谈VarPtr和StrPtr
这两个函数在微软的文档中是找不到帮助信息的。微软并不推荐我们使用 ... - Sub testStrPtr()
- Dim lng As Long
- Dim str As String, str1 As String
- Dim b(1 To 10) As Byte
- Dim sp As Long, vp As Long
- str = "ABC"
- sp = StrPtr(str) 'sp是字符串首地址即字符h在内存中的地址
- Debug.Print "字母A的内存地址:" & sp
- vp = VarPtr(str) '保存str指针变量的内存地址(str是指向BSTR字符串"ABC"的指针)
- Debug.Print "指向BSTR字符串""ABC""的指针的内存地址" & vp
- CopyMemory lng, ByVal vp, 4 '将vp指向的内容拷贝4个字节到lng。
- Debug.Print vp & "指向的内容是否是""A""在内存中的实际地址" & sp & ":" & (lng = sp)
- CopyMemory b(1), ByVal sp, 10 '将sp保存的地址的实际内容拷贝给byte型数组b(),并输出。
- str1 = b
- MsgBox str '"ABC"
- End Sub
复制代码 b长度应该为6,复制内存时应为6个字节,上述代码str1的长度是5个而不是3个。 |
|