|
香川群子 发表于 2013-5-5 21:46
使用VBA内存数组时,读、写入数组时首先需要检索行、列位置。
而数组中定位置也并非人类脑子中想一想那么 ...
裙子姐姐的观点和俺不一致,请问有什么资料出处吗?俺也可以去学习学习
俺的浅见和学习以来一直的理解,如果是错误的还请教育俺:
vba 内存数组的访问,首先我们摒弃String 类型,因为字符串数组不是简单数据类型,而是封装了BSTR 结构,这个复杂类型我们暂时不讨论。
假设一个一维Integer 内存数组: Dim ar(100) as integer
假设要访问 ar(81) , 应该是计算机会首先找到该数组连续存储内存位置的首地址,即ar(0) 的地址,然后向后检索81 个位置,即该下标的偏移值。有点类似 基址+ 偏移地址的概念。我们知道vba 对于数组的访问都是Byref 也就是按址访问,那么是否应该理解为是通过指针的概念进行寻址求值访问的。
二维数组在内存中的存储也是和一维数组相同的,都是连续存储。并不是二维表的格式存储的,
比如定义二维数组 ar (1 to 2,1 to 2) 那么该数组在内存中应该是 ar(1,1), ar(1,2),ar(2,1),ar(2,2) 连续存储的就像一个一维数组一样。因此在访问时也是首先查找该二维数组的第一个元素的地址,然后进行寻址的。
请参考说明的附图: |
|