首页 > 代码库 > VB6之多维数组中元素在内存中的排列情况
VB6之多维数组中元素在内存中的排列情况
1 Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long) 2 3 4 ‘code by lichmama from cnblogs.com 5 Private Sub Form_Load() 6 Dim a(2) As Byte 7 Dim b(2, 2) As Byte 8 Dim c(2, 2, 2) As Byte 9 10 Debug.Print "一维数组:"11 Debug.Print VarPtr(a(0)), VarPtr(a(1)), VarPtr(a(2))12 ‘数组元素在内存中的排列情况:13 ‘a[0]|a[1]|a[2]14 15 Debug.Print "二维数组:"16 Debug.Print VarPtr(b(0, 0)), VarPtr(b(1, 0)), VarPtr(b(2, 0))17 Debug.Print VarPtr(b(0, 1)), VarPtr(b(1, 1)), VarPtr(b(2, 1))18 Debug.Print VarPtr(b(0, 2)), VarPtr(b(1, 2)), VarPtr(b(2, 2))19 ‘数组元素在内存中的排列情况:20 ‘b[0,0]|b[1,0]|b[2,0]-->b[0,1]|b[1,1]|b[2,1]-->b[0,2]|b[1,2]|b[2,2]21 22 Debug.Print "三维数组:"23 Debug.Print VarPtr(c(0, 0, 0)), VarPtr(c(1, 0, 0)), VarPtr(c(2, 0, 0))24 Debug.Print VarPtr(c(0, 1, 0)), VarPtr(c(1, 1, 0)), VarPtr(c(2, 1, 0))25 Debug.Print VarPtr(c(0, 2, 0)), VarPtr(c(1, 2, 0)), VarPtr(c(2, 2, 0))26 Debug.Print VarPtr(c(0, 0, 1)), VarPtr(c(1, 0, 1)), VarPtr(c(2, 0, 1))27 Debug.Print VarPtr(c(0, 1, 1)), VarPtr(c(1, 1, 1)), VarPtr(c(2, 1, 1))28 Debug.Print VarPtr(c(0, 2, 1)), VarPtr(c(1, 2, 1)), VarPtr(c(2, 2, 1))29 Debug.Print VarPtr(c(0, 0, 2)), VarPtr(c(1, 0, 2)), VarPtr(c(2, 0, 2))30 Debug.Print VarPtr(c(0, 1, 2)), VarPtr(c(1, 1, 2)), VarPtr(c(2, 1, 2))31 Debug.Print VarPtr(c(0, 2, 2)), VarPtr(c(1, 2, 2)), VarPtr(c(2, 2, 2))32 ‘数组元素在内存中的排列情况:33 ‘c[0,0,0]|c[1,0,0]|c[2,0,0]-->c[0,1,0]|c[1,1,0]|c[2,1,0]-->c[0,2,0]|c[1,2,0]|c[2,2,0]34 ‘-->c[0,0,1]|c[1,0,1]|c[2,0,1]-->c[0,1,1]|c[1,1,1]|c[2,1,1]-->c[0,2,1]|c[1,2,1]|c[2,2,1]35 ‘-->c[0,0,2]|c[1,0,2]|c[2,0,2]-->c[0,1,2]|c[1,1,2]|c[2,1,2]-->c[0,2,2]|c[1,2,2]|c[2,2,2]36 37 ‘我们习惯逻辑上这么给数组赋值,字面上像是b()="lhmimaca!"38 b(0, 0) = &H6C: b(0, 1) = &H68: b(0, 2) = &H6D39 b(1, 0) = &H69: b(1, 1) = &H6D: b(1, 2) = &H6140 b(2, 0) = &H63: b(2, 1) = &H61: b(2, 2) = &H2141 42 Dim text As String43 text = String(9, " ")44 Call RtlMoveMemory(ByVal StrPtr(text), ByVal VarPtr(b(0, 0)), 9)45 Debug.Print "但,其实结果是这样的:";46 Debug.Print StrConv(text, vbUnicode)47 End Sub
看结果说话(内存地址打印):
一维数组: 2031464 2031465 2031466 二维数组: 2048432 2048433 2048434 2048435 2048436 2048437 2048438 2048439 2048440 三维数组: 2059256 2059257 2059258 2059259 2059260 2059261 2059262 2059263 2059264 2059265 2059266 2059267 2059268 2059269 2059270 2059271 2059272 2059273 2059274 2059275 2059276 2059277 2059278 2059279 2059280 2059281 2059282 但,其实结果是这样的:lichmama!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。