|
楼主 |
发表于 2014-6-20 16:14:44
|
显示全部楼层
四川省南充市
然后我们来看下文本数组
变量名 | 类 型 | 静态 | 数组 | 备 注 | 文本 | 文本型 | | 0 | 变量地址 | 整数型 | | |
文本 = { “a”, “b”, “c” }调试输出 (取变量数据地址 (文本 [1 ])) 调试输出 (取字节集数据 (指针到字节集 (取变量数据地址 (文本 ) + 0, 4 ), #整数型, )) 调试输出 (取变量数据地址 (文本 [2 ])) 调试输出 (取字节集数据 (指针到字节集 (取变量数据地址 (文本 ) + 4, 4 ), #整数型, )) 调试输出 (取变量数据地址 (文本 [3 ])) 调试输出 (取字节集数据 (指针到字节集 (取变量数据地址 (文本 ) + 8, 4 ), #整数型, ))
我想可以看出,当存储的是文本型这种只可以传递内存地址的数据的时候,内存里存储的是内存地址的数组,而非数据的数组
字节集也是一样的道理。这就是易语言,或者说是大部分编程语言的数组在内存中的存储方式。
OK,让我们最后讲讲自定义数据类型吧~
[e=2].版本 2
.支持库 spec
.子程序 测试
.局部变量 自定义数据类型, 数据类型1
.局部变量 变量地址, 整数型
自定义数据类型.a = 123 ' a是整数型
自定义数据类型.b = “abc” ' b是文本型
自定义数据类型.c = 9 ' c是字节型
自定义数据类型.d = 8 ' d是字节型
变量地址 = 取变量地址 (自定义数据类型)
变量地址 = 取字节集数据 (指针到字节集 (变量地址, 4), #整数型, )
调试输出 (指针到字节集 (变量地址, 4 + 4 + 4 + 4))
调试输出 (取变量数据地址 (自定义数据类型.b))
调试输出 (取字节集数据 (指针到字节集 (变量地址 + 4, 4), #整数型, ))
[e]
开始运行被调试程序
* 字节集:16{123,0,0,0,4,1,174,0,9,0,0,0,8,0,0,0}
* 11403524
* 11403524
被调试易程序运行完毕
如你们所见
实质上自定义数据结构也不过是内存中的一段数据
当变量需要传值的时候,在内存里成员所对应的内存地址里存储的就是那个变量的内存地址
否则直接存储数值。
然而要注意的是,字节型理论上只占用一个字节
实质上在易语言中被解释成了4字节长度
基本上我想讲的就这么多了
我想,如果有人想要设计一个脚本解释器之类的,使用申请内存()来做各种变量应该有思路了吧(笑)
|
|