是否有对的等效C++
sizeof
在VBA函数?
唯一远程类似的功能似乎是Ubound
和LBound
对数组运算符。
Dim arr(1 to 4) as integer
MsgBox Ubound(arr)
但是,这并不是真正的同样的事情C ++代码:
int arr[10];
std::cout << sizeof(std::string) << "\t" << sizeof(arr);
是否有对的等效C++
sizeof
在VBA函数?
唯一远程类似的功能似乎是Ubound
和LBound
对数组运算符。
Dim arr(1 to 4) as integer
MsgBox Ubound(arr)
但是,这并不是真正的同样的事情C ++代码:
int arr[10];
std::cout << sizeof(std::string) << "\t" << sizeof(arr);
可以在VBA中使用的一些指针相关的功能是在: http://support.microsoft.com/kb/199824无明显等同sizeof
虽然
对于数组,你可能会做一些与VarPtr
,如果你暂时做数组中的一个项目再然后收缩回所需的大小:
Sub foo()
Dim arr() As Integer
Dim i As Integer
ReDim arr(1 To 5)
arr(1) = 12
arr(2) = 456
arr(3) = -41
arr(4) = 17
Debug.Print VarPtr(arr(1)) & "; " & VarPtr(arr(5)) & "; " & VarPtr(arr(5)) - VarPtr(arr(1))
ReDim Preserve arr(1 To 4)
End Sub
这里将是莱恩功能 ,但用绳子将无法正常工作SizeOf
,因为它会从字面上检查包含在一个字符串变量的字符串的长度。
因此,要检查整数数组的字节大小:
Dim arr(1 To 4) As Integer
Debug.Print (UBound(arr) - LBound(arr) + 1) * Len(arr(LBound(arr)))
立即窗口将显示: 8
我意识到这是超级晚,但是......你想要的是LenB()
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Debug.Print LenB("a") '==>2 i.e. ["a",0&]
Dim r as RECT
debug.print LenB(r) '==>16 i.e. 4 bytes for each long