什麼是值傳遞和引用傳遞

2021-08-22 14:57:02 字數 1131 閱讀 8386

關於值型別與引用型別,值傳遞與引用傳遞的歸納,總結一下,分享給大家:

<1>值型別預設存放在棧中,但當值型別是在引用型別中宣告的時候,則存放在其所在的引用型別的堆中。

<2>引用型別存放在堆中,其在堆中的記憶體位址放在棧中。

<1>值型別引數可以值傳遞,也可以通過ref、out關鍵字修飾,進行引用傳遞。

<2>引用型別引數只能以引用傳遞方式傳遞。

值傳遞:方法呼叫時,實際引數把它的值傳遞給對應的形式引數,形式引數只是用實際引數的值初始化自己的儲存單元內容,是兩個不同的儲存單元,所以方法執行中形式引數值的改變不影響實際引數的值。

**如下:

class program

//值傳遞

static void test(int a)

}結果:1

引用傳遞:也稱為傳位址。方法呼叫時,實際引數是物件(或者陣列),這是實際引數與形式引數指向同乙個位址,在方法執行中,對形式引數的操作實際是就是對實際引數的操作,這個結果在方法結束後,被保留了下來,所以方法執行中形式引數的改變將會影響實際引數。

**如下:

class program

;//通過ref關鍵字,對值型別變數a進行引用傳遞

test(ref a,p);

console.writeline(a);

console.writeline(p.age);

console.write("press any key to continue . . . ");

console.readkey(true);

}//引用傳遞

static void test(ref int a,person p)

}class person

}結果:2

13 什麼是值傳遞和引用傳遞???

基本資料型別是值傳遞 值傳遞是指在呼叫方法時將實際引數複製乙份 傳到方法中 如果在方法中對引數進行修改 不會影響原來引數 引用資料型別是引用傳遞 引用傳遞是指在呼叫方法時將實際引數的位址 傳到方法中 如果在方法中對引數進行修改 原來引數也會改變 public class test 將c的記憶體位址傳...

值傳遞和引用傳遞

幾乎每種語言都有值傳遞和引用傳遞.下面是我的一些曲解,只講現象,不涉及到任何的原理,主要是鬧著玩的.a 新交了個女朋友b.有一天他女朋友b看見a在吃冰激凌,b想吃,但是a是個 座有點小潔癖,不想讓b吃,於是給b買了個新的冰激凌說你吃這個吧,別碰我嘴裡這個.這就是值傳遞.a和b的值沒有任何關係,他們一...

值傳遞和引用傳遞

1.什麼是值傳遞和引用傳遞 值傳遞 方法呼叫時,實際引數的值copy乙份傳遞給形式引數,此時,有兩個相等的數值分別儲存於不同的記憶體位址上,因此,後面的方法中都是對形參位址上的數值進行修改。引用傳遞 方法呼叫時,實際引數的值 也就是位址 copy乙份傳遞給形式引數,此時,形參和實參的引用都指向同一儲...