值傳遞與引用傳遞

2021-09-25 03:11:45 字數 770 閱讀 4525

基本型別的資料的傳遞.

因為基本資料型別在棧中儲存,不同的方法棧區不同,基本資料型別的資料作為方法的引數進行傳遞,那麼方法中會另外開闢乙個新的記憶體空間。跟原來的記憶體空間不是乙個記憶體空間,如果在方法中對引數值進行更改,不會影響原來記憶體空間的值.如果非要獲取方法中修改後的值,則需要把修改後的值返回回來(也就是return)。

傳遞的是陣列,物件,以及堆中的資料的傳遞.

如果傳遞的是物件或者陣列,這些都是存放在堆空間中的,都是同乙份記憶體空間,如果在方法中引用的物件或者陣列做任何的修改都會影響原來記憶體空間的值,即修改了原來記憶體空間,其實操作的是同乙份記憶體空間.

所以值傳遞和引用傳遞的本質不同:

public class demo1 

/*** 此方法演示值傳遞,但是有返回值

* @param a

*/public int valuetransfer1(int a)

/*** 引用傳遞

* @param args

*/public void referencetransfer(student stu)

public static void main(string args)

}

結果:

100a=10

a=100

有引數構造

無引數構造

age=19

name=ee

stuno=s003

引用傳遞與值傳遞

看 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 ...