值型別變數和引用型別變數的區別

2021-08-11 15:41:23 字數 439 閱讀 7033

主要區別在於 系統在記憶體空間中為兩者分配儲存空間的方式不同。

記憶體空間分為棧空間和堆空間。值型別資料的儲存空間在棧空間中分配,引用型別資料則在堆空間分配。

由系統管理棧空間的所有操作,包括進棧和出棧。當乙個資料出棧後,其所分配到的儲存空間由系統自動**。

堆空間由clr負責管理。

c#中的值型別變數和c/c++中的普通變數(非指標變數)相似。當定義乙個值型別變數並初始化時,系統會在棧空間中為這個變數分配儲存空間,並將值存放在儲存空間中。

引用型別變數類似c/c++中的指標變數。例如 int *p,指標變數p儲存的是某個整形變數的位址。而引用型別變數儲存的則是某個物件的位址,而非變數或物件本身。

事實上,當定義乙個變數,不論是值型別變數還是引用型別變數,並初始化時,系統都是在棧空間中為他們分配對應的儲存空間。所不同的是,引用型別變數所指向的物件的儲存空間是在堆空間分配的。

C 變數型別 引用型別和值型別

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

變數的引用型別和非引用型別的區別

author liyuechao date 2014.8.8 algo1 3.cpp 變數的引用型別和非引用型別的區別 includevoid fa int a 在函式中改變a,將不會帶回主調函式 主調函式中的a仍是原值 void fb int a 由於a為引用型別,在函式中改變a,其值將帶回主調函...

變數的引用型別和非引用型別的區別

author liyuechao date 2014.8.8 algo1 3.cpp 變數的引用型別和非引用型別的區別 includevoid fa int a 在函式中改變a,將不會帶回主調函式 主調函式中的a仍是原值 void fb int a 由於a為引用型別,在函式中改變a,其值將帶回主調函...