函數(shù)的形參實(shí)參問題
鄭志武
發(fā)布于2012-11-27 22:38
1
0
標(biāo)簽:
https://support.automation.siemens.com/cn/llisapi.dll?func=cslib.csinfo&objid=22303713&ehbid=24520368&load=treecontent&lang=zh&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=cn
有幾個(gè)問題想請(qǐng)教下:
1.剛開始的一段
linput
tlw"1"變量初始化
linout
tlw"3"變量初始化
callfc
llw"2"
//變量初始化不在這里執(zhí)行!
//用戶必須保證output變量
//在每個(gè)fc周期中描述:
toutput
llw"3"
tinout
當(dāng)fc調(diào)用完成,編輯器將塊參數(shù)以越域指針保存在塊代碼中。每個(gè)塊參數(shù)需要一個(gè)雙字內(nèi)存空間:
p#lw"1"input(e,a,m)
p#lw"2"output(e,a.m)
p#lw"3"in_output(e,a,m)
編輯器在塊參數(shù)傳送過程中使用臨時(shí)本地?cái)?shù)據(jù)。指針根據(jù)數(shù)據(jù)類型和聲明類型指示當(dāng)前參數(shù):
llw"2"
toutput
llw"3"
tinout
這一段看著比較費(fèi)解,應(yīng)該如何理解的?
2.還有后面有一句:
塊所使用的輸入、輸出和in_out參數(shù)是作為指針被保存到調(diào)用代碼塊的實(shí)際參數(shù)中。這些指針對(duì)用戶來說是不可見的。
是不是可以這樣理解,比如在ob1中調(diào)用fc1,fc1的in,out,in-out會(huì)作為指針被保存在ob1的實(shí)際參數(shù)中?
問題補(bǔ)充:
第2個(gè)明白了,個(gè)還是有的模糊,還是以ob1調(diào)用fc1為例,這個(gè)lw"2",lw"3",lw"1"是否可以理解為一個(gè)全局變量,還是不是可以把引號(hào)拿掉理解為臨時(shí)堆棧
佳答案
1、編輯器在塊參數(shù)傳送過程中使用臨時(shí)本地?cái)?shù)據(jù)。指針根據(jù)數(shù)據(jù)類型和聲明類型指示當(dāng)前參數(shù):
llw"2"
toutput
llw"3"
tinout
這一段看著比較費(fèi)解,應(yīng)該如何理解的?
編輯器在塊參數(shù)傳送過程中使用臨時(shí)本地?cái)?shù)據(jù),指針根據(jù)數(shù)據(jù)類型和聲明類型指示當(dāng)前參數(shù):
lw"2",就是傳遞的output
lw"3"傳遞的是inout參數(shù)
lw"1"傳遞的是input參數(shù)
2、是不是可以這樣理解,比如在ob1中調(diào)用fc1,fc1的in,out,in-out會(huì)作為指針被保存在ob1的實(shí)際參數(shù)中?
不是,是塊所使用的輸入、輸出和in_out參數(shù)是作為指針被保存到調(diào)用代碼塊的實(shí)際參數(shù)中。
就是說你在ob1調(diào)用了fc這個(gè)功能,定義的輸入、輸出和in_out,的參數(shù)都是以指針形式保存在這個(gè)功能,管腳上填寫的實(shí)際參數(shù)中。不是ob1里的實(shí)際參數(shù)中。