FB 接口只有in_out 才能定义variant,FC的in,output,和in_out都可以定义variant

已锁定

question

  • 帖子

    890
  • 精华

    6
  • 被关注

    109

论坛等级:奇侠

注册时间:2004-04-13

黄金 黄金 如何晋级?

FB 接口只有in_out 才能定义variant,FC的in,output,和in_out都可以定义variant

5070

15

2017-09-22 20:45:04

传值(pass by value)和传引用(pass by reference)的区别。

传值有拷贝开销,而传引用没有,传引用的实质就是传指针,所以可以在函数体内修改传进来的那个变量。而传值是不行的。


对于基本数据类型,FC和FB接口都是传值。这里我们讨论复合数据类型。


variant的本质是指针,只能在传引用的接口区声明。

FB 的in,output接口都是传值,而in_out 接口是传引用,故variant必须在in_out区声明,可以在函数块内修改实参的值。


对于FC的in,output,in_out接口都是传引用,都可以定义variant变量。既然in接口是传引用,为何不能在函数内修改函数外的值呢,因为这个引用是只读引用。


如果有一个大型数组,读取无需修改元素的值,对于FC,尽量在in接口声明,而不是在in_out接口。

对于FB,建议放在in,而不是放在in_out, 虽然这么做会牺牲效率,但代码更清晰,防止非法修改。

FB 接口只有in_out 才能定义variant,FC的in,output,和in_out都可以定义variant 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11189条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。