问题
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
图中代码执行后输出如下结果:
既然 "变量地址" 处记录的是实际数据的地址, 那为什么还要 + 8 呢 ?
下图中的代码说明了这个问题
原帖链接:http://bbs.eyuyan.com/read.php?tid=227309&page=2