值傳遞與引用傳遞詳解

2021-10-10 02:25:51 字數 1276 閱讀 3323

值傳遞:是指在呼叫函式時,將實際引數複製乙份傳遞到函式中,這樣在函式中如果對引數進行修改,就不會影響到實際引數

如下圖所示,當傳遞引數之前會將引數進行複製,函式中修改了引數,不會影響實際引數

值傳遞是對於是對基本資料而言,例如下面例子,number沒有改變。

引用資料型別分為兩個部分,引用變數和物件,這兩個部分放在不同的地方,引用變數在棧中,而物件是放在堆記憶體中的,引用變數指向物件。

如下圖所示,當傳遞引數之前會將引數進行複製,但是複製的是引用變數,複製後的引用變數還是指向記憶體中的同一物件,所以引用傳遞中,函式修改了引數會影響實際引數

引用傳遞是對於引用資料型別而言,例如對於user類姓名的修改,會改變物件的name。

注意點,引用型別中的string的值是放在常量池中,我們改變副本的值不會影響到原來的值。

例如在change放發中改變了副本的值,但是原來的str字串不會改變。

引用傳遞與值傳遞

看 define n 10000 define n 10000 ini set memory limit 1g function microtime float function printarray0 arr 引用傳遞 function printarray1 arr 值傳遞 for i 0 i ...

值傳遞與引用傳遞

分析 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。由於x 1 是在test方法棧裡面執行的,所以只會改變test方法棧裡面的x值,而不會改變main方法棧裡面的x值 形參的改變不會影響實參 引用傳遞,傳遞的是實際引數的位址.傳遞的是值的引用,也就是說傳遞前和傳遞後都指向同乙個引用 同乙個記...

值傳遞與引用傳遞

值傳遞,只是傳遞副本,而引用傳遞,是傳遞乙個位址 using system using system.collections.generic using system.linq using system.text v console.writeline 引用傳遞,結果為!r static void ...