VB6之多维数组中元素在内存中的排列情况
Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long) 'code by lichmama from cnblogs.com
Private Sub Form_Load()
Dim a() As Byte
Dim b(, ) As Byte
Dim c(, , ) As Byte Debug.Print "一维数组:"
Debug.Print VarPtr(a()), VarPtr(a()), VarPtr(a())
'数组元素在内存中的排列情况:
'a[0]|a[1]|a[2] Debug.Print "二维数组:"
Debug.Print VarPtr(b(, )), VarPtr(b(, )), VarPtr(b(, ))
Debug.Print VarPtr(b(, )), VarPtr(b(, )), VarPtr(b(, ))
Debug.Print VarPtr(b(, )), VarPtr(b(, )), VarPtr(b(, ))
'数组元素在内存中的排列情况:
'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] Debug.Print "三维数组:"
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
Debug.Print VarPtr(c(, , )), VarPtr(c(, , )), VarPtr(c(, , ))
'数组元素在内存中的排列情况:
'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]
'-->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]
'-->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] '我们习惯逻辑上这么给数组赋值,字面上像是b()="lhmimaca!"
b(, ) = &H6C: b(, ) = &H68: b(, ) = &H6D
b(, ) = &H69: b(, ) = &H6D: b(, ) = &H61
b(, ) = &H63: b(, ) = &H61: b(, ) = &H21 Dim text As String
text = String(, " ")
Call RtlMoveMemory(ByVal StrPtr(text), ByVal VarPtr(b(, )), )
Debug.Print "但,其实结果是这样的:";
Debug.Print StrConv(text, vbUnicode)
End Sub
看结果说话(内存地址打印):
一维数组: 二维数组: 三维数组: 但,其实结果是这样的:lichmama!
VB6之多维数组中元素在内存中的排列情况的更多相关文章
- PHP计算二维数组指定元素的和
array_sum(array_column($arr, 'num')); //计算二维数组指定元素的和 $arr = [ [ 'id'=>1, 'num'=>3, ], [ 'id'=& ...
- C语言中二维数组如何申请动态分配内存
C语言中二维数组如何申请动态分配内存: 使用malloc函数,先分配第一维的大小,然后再循环分配每一维的大小 #include <stdio.h> #include <malloc. ...
- PHP方便快捷的将二维数组中元素的某一列值抽离出来作为此二维数组内元素的key
得益于PHP的强大的内置数组函数array_column();array_combine(); 举个小栗子: <?php // 先查询出用户的基本信息 $userArray = [['id' = ...
- 101-PHP二维数组的元素输出三,封装成函数
<?php $arr=array(array(76,87,68), array(65,89,95), array(90,80,66), array(90,95,65),5,234,56,'Hel ...
- 100-PHP二维数组的元素输出三
<?php $stu=array(array(76,87,68), array(65,89,95), array(90,80,66), array(90,95,65)); //定义一个二维数组 ...
- 099-PHP二维数组的元素输出二
<?php $stu=array(array(76,87,68), array(65,89,95), array(90,80,66), array(90,95,65)); //定义一个二维数组 ...
- C++获取二维数组的元素个数
C/C++获取二维数组的大小/长度/元素个数 ][]; ]) /
- 《剑指offer》查找二维数组内元素 c++
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. cl ...
- 098-PHP二维数组的元素输出
<?php $stu=array(array(76,87,68), array(65,89,95), array(90,80,66), array(90,95,65)); //定义一个二维数组 ...
随机推荐
- 《Android进阶》之第六篇 Fragment 的使用2
最近通过学习,对fragment的使用有了新的认识. 一开始接触android的时候,很是受不了这个fragment,总感觉它把一个简单的事情搞复杂啦,所以每次新建工程的时候总是固执的选择empty ...
- HTML5 进阶系列:canvas 动态图表
前言 canvas 强大的功能让它成为了 HTML5 中非常重要的部分,至于它是什么,这里就不需要我多作介绍了.而可视化图表,则是 canvas 强大功能的表现之一. 现在已经有了很多成熟的图表插件都 ...
- 关于JAVA自带MD5的方法
有空再详细解释 import java.security.MessageDigest; public class MD5 { public final static String MD51(Strin ...
- Ultimus BPM 金融与证券行业应用解决方案
Ultimus BPM 金融与证券行业应用解决方案 行业应用需求 金融服务业的整合与全球化发展,带来高度竞争的国际市场,所牵涉的产业包括了商业.贷款.投资银行,以及保险公司和许多其它为企业和消费者提供 ...
- 小tips:用java模拟小球做抛物线运动
这几天刚刚学习了java线程,然后跟着书做了几个关于线程的练习,其中有一个练习题是小球动起来.这个相信很简单,只要运用线程就轻松能够实现.然后看到了它的一个课后思考题,怎样让小球做个抛物线运动,这点我 ...
- Maven学习(五)
使用Maven构建多模块项目 一般的web项目构成: 建立解决方案目录parent 首先使用命令进入到我们需要建立maven项目的目录: mvn archetype:generate -DgroupI ...
- Windows7 安装完成mysql dos启动服务出现服务名称无效
错误提示: WIN 7 cmd命令行下,net start mysql,出现 服务名无效提示: 错误分析: Mysql服务未安装 解决方案:在mysql 安装目录下bin文件夹 安装Shift+鼠 ...
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...
- SQL SERVER 自动生成 MySQL 表结构及索引 的建表SQL
SQL SERVER的表结构及索引转换为MySQL的表结构及索引,其实在很多第三方工具中有提供,比如navicat.sqlyog等,但是,在处理某些数据类型.默认值及索引转换的时候,总有些 ...
- 第一次使用idea从SVN什么checkout项目,一直都是用的eclipse
IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解! 二话不说 进入主题 我们创建空项目实际上是项目空间 进入主界面 想用svn必须先启用它 选择Su ...