如何在vba中用VarPtrArray函数获取数组变量的内存地址? - API - ExcelOffice

如何在vba中用VarPtrArray函数获取数组变量的内存地址?





在文章如何在vba中用VarPtr获取变量的内存地址? 一文中介绍了用隐藏的vb函数VarPtr获取变量的起始存储内存地址。

虽然VarPtr函数可以获取数组元素的起始存储内存地址,但是它无法获取数组变量的起始存储内存地址。

数组在vb中是以SAFEARRAY 结构存储的,SAFEARRAY 结构的语法如下:

其中参数cDims表示数组的维度,cbElements参数表示数组元素的字节大小,pvData参数表示数组的数据。

从SAFEARRAY 结构的语法可以看出,数组变量的起始存储内存地址是不同于数组的第一个元素的其实存储内存地址的,它还需要存储数组的维度、元素的字节大小等信息。

为此,vb中内置了一个api函数VarPtrArray 可以获取数组变量的起始存储内存地址,也就是SAFEARRAY 结构的内存地址。

在VB中使用VarPtrArray函数前,需要先声明如下:

代码如下:

 

 

打赏

发表评论