值型別引用型別
記憶體分配地點
分配在棧中
分配在堆中
效率效率高,不需要位址轉換
效率低,需要進行位址轉換
記憶體**
使用完後,立即**
使用完後,不是立即**,等待gc**
賦值操作
進行複製,建立乙個同值新物件
只是對原有物件的引用
函式引數與返回值
是物件的複製
是原有物件的引用,並不產生新的物件
型別擴充套件
不易擴充套件
容易擴充套件,方便與型別擴充套件
**:值型別引用型別
記憶體分配地點
分配在棧中
分配在堆中
效率效率高,不需要位址轉換
效率低,需要進行位址轉換
記憶體**
使用完後,立即**
使用完後,不是立即**,等待gc**
賦值操作
進行複製,建立乙個同值新物件
只是對原有物件的引用
函式引數與返回值
是物件的複製
是原有物件的引用,並不產生新的物件
型別擴充套件
不易擴充套件
容易擴充套件,方便與型別擴充套件
C 學習 關於值型別和引用型別
值型別 c 的基本型別 int long float char bool 結構 struct 列舉 enum 均繼承自system.valuetype,空間在棧內分配 引用型別 類 class自定義類 基類system.object string 委託 delegate關鍵字宣告的類 介面 inte...
關於C 值型別,引用型別,值傳遞,引用傳遞
說到引數傳遞,必須得弄清值型別和引用型別 為了容易表達,我暫且命名存放在堆中的內容為堆中物件,存放在棧上的內容為棧中物件。值型別存放在棧中,直接訪問。如果有 int a 0 int b a 就產生了兩個棧中物件。引用型別需要在堆中顯式分配,且不能直接訪問,需要在棧中分配乙個棧中物件 c 叫指標,c ...
C 值型別和引用型別
c 資料型別 值型別,引用型別 概念 值型別直接儲存其值,引用型別儲存對值的引用 這兩種型別儲存在記憶體的不同地方 值型別儲存在堆疊中,引用型別儲存在託管堆上。乙個引用型別的例子,如圖 上圖中,只有乙個user物件,u1和u2都指向包含該物件的記憶體位置 執行結果 在c 中,基本資料型別如bool和...