'copymemory可以实现不同维数数组间的转换,如:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Dim a(5, 7) As Byte, b(15, 2) As Byte, c(47) As Byte, d(2, 3, 3) As Byte '定义48个元素的四个数组用于测试
Sub xxxx()
Dim i As Integer, j As Integer, k As Integer For i = 0 To 5 '随机定义数组a
For j = 0 To 7
a(i, j) = Int(Rnd * 128)
Next
Next Debug.Print "array a():" '数组a( 6 行8 列)
For i = 0 To 5
For j = 0 To 7
Debug.Print Right(Space(5) & a(i, j), 5);
Next
Debug.Print
Next
Debug.Print Debug.Print "array b():" '数组b( 16 行 3 列)
CopyMemory b(0, 0), a(0, 0), 48
For i = 0 To 15
For j = 0 To 2
Debug.Print Right(Space(5) & b(i, j), 5);
Next
Debug.Print
Next
Debug.Print
Debug.Print "array c():" '数组c( 48 行 1 列)
CopyMemory c(0), b(0, 0), 48
For i = 0 To 47
Debug.Print Right(Space(5) & c(i), 5)
Next
Debug.Print Debug.Print "array d():" '数组d( 3 行 4 列 4 层)
CopyMemory d(0, 0, 0), c(0), 48
For i = 0 To 2
For j = 0 To 3
For k = 0 To 3
Debug.Print Right(Space(5) & d(i, j, k), 5);
Next
Debug.Print
Next
Debug.Print "---------------------------"
Next
End Sub
返回:
array a():
311257 49 46 62 19 60
32 80 69 20120 83 64 49
13100 58 96 761062 26
9 13 42 160 68 84 69
105 10 24 86 58 45 19 90
118 67 11 96 51 59 62 26 array b():
31 24106
32 11 68
13 49 45
9 20 59
105 96 19
118 16 64
125 862
80 96 84
100 46 19
13120 62
10 76 60
670 49
7 58 26
69 51 69
58 62 90
42 83 26 array c():
31
32
13
9
105
118
125
80
100
13
10
67
7
69
58
42
24
11
49
20
96
16
86
96
46
120
76
0
58
51
62
83
106
68
45
59
19
64
2
84
19
62
60
49
26
69
90
26 array d():
317 46 19
9 420 84
125 49 62 60
13 16 68 69
---------------------------
32 69120 64
105 24 58 19
80 20 83 49
10 86 45 90
---------------------------
13 58 762
118 11 51 62
100 96106 26
67 96 59 26
---------------------------