易语言取变量地址与取变量数据地址

问题

x = { 1, 2, 3 }
调试输出 (到字节集 (取变量数据地址 (x)))
调试输出 (指针到字节集 (取变量地址 (x), 4))

为什么结果输出相差8个呢?是不是前8个存储的是字节集长度?

解答汇总

1.字节集变量的地址是首字符的地址。
2.首字符前4个字节是其长度。

版本 2
.支持库 spec
 
.局部变量 x, 字节集
.局部变量 长度, 整数型
.局部变量 长度数据, 字节集
 
x = { 1, 2, 3 }
调试输出 (取变量地址 (x [1]))
 
长度数据 = 指针到字节集 (取变量地址 (x [1])4, 4)
长度 = 取字节集数据 (长度数据, #整数型, )
调试输出 (指针到字节集 (取变量地址 (x [1]), 长度))

每种变量类型的存储方式不一样,以字节集为例:

取变量地址()取出地址值要比取变量数据地址()相差8字节,这8字节集用于存储变量的类型(整数型)、长度(整数型)。

字节集,就是节字型数组......
前四个字节表示维数的,,5-8表示个数....
数组型变量的变量地址指向的内存地址前4个字节为固定的1,后4个字节为数组的成员数,然后才是真实的数据。所以变量地址里的数值比指针小8

实例

字节集型变量其实是个指针型变量

变量地址 = 取变量地址 (字节集)

"变量地址" 处记录的是实际数据的首地址

例如: 0x00000001 = {1,2,3,4,5,6} 那么 "变量地址" 处记录的是 0x00000001

511遇见

图中代码执行后输出如下结果:

511遇见

既然 "变量地址" 处记录的是实际数据的地址, 那为什么还要 + 8 呢 ?
下图中的代码说明了这个问题

511遇见

原帖链接:http://bbs.eyuyan.com/read.php?tid=227309&page=2


发布日期:

所属分类: 易语言 标签: