C 關於值型別和引用型別的備忘

2022-03-08 19:06:48 字數 606 閱讀 5329

值型別引用型別

記憶體分配地點

分配在棧中

分配在堆中

效率效率高,不需要位址轉換

效率低,需要進行位址轉換

記憶體**

使用完後,立即**

使用完後,不是立即**,等待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和...