ref 修飾值型別和修飾引用型別

2021-08-14 19:52:57 字數 567 閱讀 9082

ref 關鍵字傳遞棧位址

引用型別傳遞的堆的位址

引用型別的物件或例項儲存在堆上,而棧上儲存的是指向放物件的堆的位址(棧上放了個位址,這個位址是物件在堆上的存放位置)

不加ref關鍵字時,我們傳遞的引用型別,其實是乙個指向堆的位址,method(a a);(即 棧裡面存的那個位址)

當我們在方法裡面進行操作時,比如 a b = a;其實是將a的位址放到了乙個新的棧的位置上,此時,棧上有兩個位置都放著a的位址,當我們傳遞b時,同樣的是傳遞了指向堆的那個位址。我們對堆裡面的物件進行修改,所有存放堆這塊位址的引用的物件都會發生改變。

加上ref 就不會重新分配棧的位址。

method(ref a); 此時,如果將a指向兩乙個物件,即a的位址成為另乙個物件在堆中的位址,那麼,棧中存放的位址也就變了。

而不加ref,修改b 指向的物件,只是修改了複製出來的棧裡面存放的位址。而原來的不變

比如:將乙個陣列引用傳入乙個方法,我們是不能修改傳入的引用的位址的,因為,只是傳入了乙個拷貝,在外面列印位址,會返現沒有變化

而,當我們新增ref後,再進行 a = newaddr時,原來的物件就已經變了。

mysql修飾 mysql之資料型別和修飾屬性

資料型別的作用 1.指定值的型別 2.指定占用的空間 3.指定了是定長 fixed length 還是變長 variable length 4.mysql如何比較和排序值的型別 5.定義的型別是否能被建立索引 資料型別 字元char length 以字元格式存放,不區分大小寫,定長。最大255位元組...

引用型別和值型別

c 是一種型別安全的語言。每乙個變數都要求定義為乙個特定的型別,並且要求儲存在變數中的值只能是這種型別的值。變數既能儲存值型別,也可以儲存引用型別,還可以是指標。這一課將講述前兩種型別,關於指標的討論我們將在下一課中進行。下面是關於值型別和引用型別不同點的概論 如果乙個變數v儲存的是值型別,則它直接...

引用型別和值型別

c 中值型別和引用型別作為方法引數傳遞的時候其實都可以說是 值 的傳遞,只不過這裡的 值 指代的東西有所區別。當方法的引數為值型別時,方法傳遞的是值本身的值。當方法的引數為引用型別時,方法傳遞的則是應用型別的引用的位址,也就是引用型別位址在棧上的值。舉個引用型別作為引數傳遞的例子 static vo...