恭喜,你发布的帖子
发布于 2020-12-09 12:42:18
1楼
您好,
在了解引用的使用功能之前,您首先需要了解在为FC/FB的形参传递实参之时,会有Reference“指针引用”(将外部实参拷贝到主调的堆栈再传递给形参)和Copy“副本直传”(无需拷贝,直接访问实参)两种形式,下图为编程指南的截图:
对于基本数据类型而言,拷贝确实需要额外占用运行时CPU的存储空间,但是由于长度较小可以接收。
但是,对于复杂数据类型而言,拷贝就要占用较大的存储空间,所以对于FB而言要尽量使用InOut类型。
如果用户有需求说必须要使用IN或者OUT类型的参数,此时可以使用REF_TO 复杂类型,比如数组的形式创建参数,而后在程序中通过^的形式访问,这样会减小存储空间的使用。
再来,如果在参数定义时使用了Variant的指针类型,当然在传递实参时,一定是通过引用的方式实现的。但是,Variant的使用则需要特定指令确定指向的实参的数据类型,做法就是要在临时变量中创建实参的数据类型。这时,问题就又来了,如果指向的实参是复杂类型,在temp中创建的数据也会占用比较大的空间,此时也会使用到REF_TO的形式,而后使用?=来识别。
所以,综上。例程中的教学目标是让用户了解REF_TO使用时的声明方式和指令,所以举得例子相对简单,便于理解。但是真正在现场使用时,REF_TO的主要应用目标是针对复杂数据类型,期望降低CPU的存储器空间使用。
请填写推广理由:
分享
只看
楼主