C 中 值引用和物件引用的區別

2021-06-23 02:01:06 字數 629 閱讀 9421

另外,棧有乙個很重要的特殊性,就是存在棧中的資料可以共享。假設我們同時定義: 

複製內容到剪貼簿**:

1

2

inta=3;

intb=3;

編譯器先處理int a= 3;首先它會在棧中建立乙個變數為a的引用,然後查詢有沒有字面值為3的位址,沒找到,就開闢乙個存放3這個字面值的位址,然後將a指向3的位址。接著處理int b= 3;在建立完b的引用變數後,由於在棧中已經有3這個字面值,便將b直接指向3的位址。這樣,就出現了a與b同時均指向3的情況。

特別注意的是,這種字面值的引用與類物件的引用不同。假定兩個類物件的引用同時指向乙個物件,如果乙個物件引用變數修改了這個物件的內部狀態,那麼另乙個物件引用變數也即刻反映出這個變化。相反,通過字面值的引用來修改其值,不會導致另乙個指向此字面值的引用的值也跟著改變的情況。如上例,我們定義完a與b的值後,再令a=4;那麼,b不會等於4,還是等於3。在編譯器內部,遇到a=4;時,它就會重新搜尋棧中是否有4的字面值,如果沒有,重新開闢位址存放4的值;如果已經有了,則直接將a指向這個位址。因此a值的改變不會影響到b的值。

C 中值型別和引用型別的區別

概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 區別 基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別 ...

C 中值型別和引用型別的區別

概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 區別 基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別 ...

js中值引用和位址引用

js中任何事務都是物件。包括基本資料型別 undefined,boolean,number,string,null 物件只是擁有屬性和方法的特殊資料型別。基本資料型別也是物件 var a hello var b hello 既然是物件,那麼它預設擁有屬性和方法 a.length長度屬性 a.toup...