指针型数据类型是一样十分强大的数据类型。在很多应用时用指针型可以便捷的进行一些操作。

易没有指针型是一大憾事。

但突然灵机一闪,其实可以给易伪造一份指针型变量。

易的局部变量中的自定义数据类型变量实际是一个指针。平时操作的也是一个指针,只是开发人员接触不到。

而易的参考属性是很有价值的东西,为什么这么说,因为我所想到的就是强制修改掉指针啊。

子程序1(某指针变量)

{

局部变量 变量1,数据类型1

局部变量 备份指针

备份指针=修改指针_数据类型1(变量1,某指针变量)

变量1.成员2=1 ' // 相当于C中的 某指针变量->成员2=1;

变量1.成员4=xxxx

修改指针_数据类型1(变量1,备份指针) ' // 恢复指针,必须恢复,否则内存管理错误

}

 看起来我上次发的解析易的类里面的一个代码的有点像

其实可以考虑做一个支持库,弄成通用类型,这样就可以省去大量[修改指针_xxx]了。

省去俺用copy的超麻烦低效率的方式来实现

至于修改指针_xxx的代码很简单因为在调用修改指针_xxx的时候实际易传的是二级指针

唯一的缺点就是数据类型必须符合易的内部数据类型规则,int对齐,只能是基本类型,不得嵌套其他类型,不能有数组。当然,如果仅是易代码里自己用的那就没这要求了,至于其他语言的看运气如何了。

========

下面代码听懂原理的高手免看,废话而已

===

void* 修改指针_xxx(void** p, void* pNew)

{

void* old = *p;

*p=pNew;

return old;

}



修改指针_xxx 整数形(参数1,参数2)

asm 

{

// push ebp; mov ebp,esp;

mov edx,[ebp+8];

mov eax,[edx];

mov ecx,[ebp+c];

mov [edx],ecx;

leave;

retn 8;

}

返回(0)

 

========

貌似所有的编程工具都支持16进制,就易的产品没支持,汗一个

来自易友