這是引數傳遞的預設方式。在這種方式下,當呼叫乙個方法時,會為每個值引數建立乙個新的儲存位置。
實際引數的值會複製給形參,實參和形參使用的是兩個不同記憶體中的值。所以,當形參的值發生改變時,不會影響實參的值,從而保證了實參資料的安全。下面的例項演示了這個概念:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
static
void
main
(string
args)"
,a);console
.writeline
("在交換之前,b 的值: ",b
);/* 呼叫函式來交換值 */n.
swap(a
,b);console
.writeline
("在交換之後,a 的值: ",a
);console
.writeline
("在交換之後,b 的值: ",b
);console
.readline
();}
}}
在交換之前,結果表明,即使在函式內改變了值,值也沒有發生任何的變化。a 的值:
100在交換之前,
b 的值:
200在交換之後,
a 的值:
100在交換之後,
b 的值:
200
引用引數是乙個對變數的記憶體位置的引用。當按引用傳遞引數時,與值引數不同的是,它不會為這些引數建立乙個新的儲存位置。引用引數表示與提供給方法的實際引數具有相同的記憶體位置。
在 c# 中,使用ref關鍵字宣告引用引數。下面的例項演示了這點:
using當上面的**被編譯和執行時,它會產生下列結果:system
;namespace
static
void
main
(string
args)"
,a);console
.writeline
("在交換之前,b 的值: ",b
);/* 呼叫函式來交換值 */n.
swap
(refa,
refb
);console
.writeline
("在交換之後,a 的值: ",a
);console
.writeline
("在交換之後,b 的值: ",b
);console
.readline
();}
}}
在交換之前,結果表明,swap 函式內的值改變了,且這個改變可以在 main 函式中反映出來。a 的值:
100在交換之前,
b 的值:
200在交換之後,
a 的值:
200在交換之後,
b 的值:
100
Python按值傳遞引數和按引用傳遞引數
python按值傳遞引數和按引用傳遞引數 按值傳遞引數 使用乙個變數的值 數字,字串 放到實參的位置上 注 傳遞過去的是變數的副本,無論副本在函式中怎麼變,變數的值都不變 傳遞常量 傳遞常量 定義乙個函式,輸出 歡迎,接收到的引數 name defhuanying name print 歡迎 nam...
JavaScript 按值傳遞 按引用傳遞
1 值的比較 引用的比較 首先,原始值的比較是值的比較 只有在它們值相等的時候它們才相等 比如簡單的 var a1 10 var a2 10 console.log a1 a2 true 其次,物件的比較並非值的比較 物件的比較均是引用的比較,當且僅當它們引用同乙個基物件時,它們才相等。即使兩個物件...
按值傳遞和按引用傳遞
對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...