傳值(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之間的差別。
沒有留言:
張貼留言