PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 疑難雜症區
帳戶
密碼
 

回應
 
主題工具
joe3970
Regular Member
 

加入日期: Jan 2017
文章: 85
有看沒有懂的程式語言參數傳送的問題?

我瞭解
call by address
call by value
call by value result
call by name

但call by result就不懂了

請問call by result是如何運作的呢?

上網找資料
有看沒有懂

call by result
2003年6月
資訊與通信術語辭典
名詞解釋:
和傳位址呼叫相似的一種參數的傳遞方式。在實施上每一個形式變數的資料結構可分為實際參數的儲存位址和內容(值)二部分,在副程式執行時可視為只對第二部份(實際參數值)做處理,於返回前才將第二部分的內容放到第一部份位址所指的實際參數內。


麻煩各位前輩們了
     
      
舊 2018-06-06, 10:06 PM #1
回應時引用此文章
joe3970離線中  
沒問題
Major Member
 

加入日期: Dec 2015
文章: 208
引用:
作者joe3970
我瞭解
call by address
call by value
call by value result
call by name

但call by result就不懂了

請問call by result是如何運作的呢?

上網找資料
有看沒有懂

call by result
2003年6月
資訊與通信術語辭典
名詞解釋:
和傳位址呼叫相似的一種參數的傳遞方式。在實施上每一個形式變數的資料結構可分為實際參數的儲存位址和內容(值)二部分,在副程式執行時可視為只對第二部份(實際參數值)做處理,於返回前才將第二部分的內容放到第一部份位址所指的實際參數內。


麻煩各位前輩們了


call by result = the same as call by value, but copy the result back to
the parameter when return from function, yields similar
effect as call by address (different to call by address in
some cases with aliase

https://stackoverflow.com/questions...-result-example
 

此文章於 2018-06-06 10:11 PM 被 沒問題 編輯.
舊 2018-06-06, 10:07 PM #2
回應時引用此文章
沒問題離線中  
yaingc
Regular Member
 

加入日期: Mar 2006
文章: 73
舊 2018-06-06, 10:11 PM #3
回應時引用此文章
yaingc離線中  
joe3970
Regular Member
 

加入日期: Jan 2017
文章: 85
謝謝兩位的回答
兩位找到的都是call by value result
call by value result比較好理解
就像 沒問題 所貼的

雖沒解決我的問題
但還是感恩兩位的回答
舊 2018-06-07, 08:23 AM #4
回應時引用此文章
joe3970離線中  
stanleywang
Amateur Member
 

加入日期: Oct 2017
文章: 38
看解釋應該是說,副程式在執行時不會更新該參數的值,而是在最後執行完的時候才更新,
比較 call by address 則是在副程式在執行過程中就會更動參數的值。

簡單的說 call by address 下該參數被賦值幾次,該參數的值就會變動幾次。
而call by result無論該參數被賦值幾次,都只會在return 時變動1次。

這個如果在single-thread,兩者是沒有分別的,
但要是在multi-thread 下,call by address 就有可能出現別的thread 讀到該參數過渡時期的值,而不是最後的結果。

此文章於 2018-06-07 09:10 AM 被 stanleywang 編輯.
舊 2018-06-07, 09:05 AM #5
回應時引用此文章
stanleywang離線中  
joe3970
Regular Member
 

加入日期: Jan 2017
文章: 85
感謝stanleywang解說
讓我豁然開悟
厲害厲害
舊 2018-06-07, 09:50 AM #6
回應時引用此文章
joe3970離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是09:11 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。