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
|
Major Member
加入日期: Dec 2015
文章: 208
|
引用:
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
|
Regular Member
加入日期: Mar 2006
文章: 73
|
|
2018-06-06, 10:11 PM
#3
|
Regular Member
加入日期: Jan 2017
文章: 85
|
謝謝兩位的回答
兩位找到的都是call by value result call by value result比較好理解 就像 沒問題 所貼的 雖沒解決我的問題 但還是感恩兩位的回答 |
2018-06-07, 08:23 AM
#4
|
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
|
Regular Member
加入日期: Jan 2017
文章: 85
|
感謝stanleywang解說
讓我豁然開悟 厲害厲害 |
2018-06-07, 09:50 AM
#6
|