2019年4月28日 星期日

Call by Value、Call by Adress(Call by Value of Pointer)、Call by Reference

傳值(Call By Value)
  參數以數值方式傳遞,複製一份參數值,
  到被呼叫的副程式予以使用。
PS:把參數值傳到另一個記憶體位置的值。



傳址 (Call By Adress)(Call by value of pointer)
  將參數以記憶體位置的方式傳到被呼叫的副程式,
  副程式需要有一個指標來指到這個參數的記憶體位置,
  但call by addres本質上也是call by value,
  只不過那個value剛好就是address而已。
PS:是把"記憶體位置"傳到 另一個"記憶體位置"的值
  ("Call By Adress")是不正統的說法,其實傳址也是傳值, 
  只是傳的是"記憶體位置"。



傳參考(Call By Reference)
  將參數以數值的方式傳遞到被呼叫的副程式,
  副程式需要有一個參考來接收這個參數。
  是把記憶體位置傳到另一個記憶體位置上 (可看作同一個物件)。
PS:因為call by address的內容為指向的位置,
  所以傳址的指標本身然仍然有記憶體位置。
  但是傳參考是不會有的,這也是和call by address之間的差別。

沒有留言:

張貼留言