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

2021-05-27 20:16:59 字數 1179 閱讀 3677

概念:

1.值型別:資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。

2.引用型別:表示指向儲存在記憶體堆中的資料的指標或引用(包括類、介面、陣列和字串)。

區別:基本區別在於它們在記憶體中的儲存方式。值型別只將值存放在記憶體中,這些值型別都儲存在堆疊中。原始資料型別(如bool和int)都屬於此型別。而引用型別的記憶體單元中只存放記憶體堆中物件的位址,而物件本身放在記憶體堆中。如果引用的值型別的值是null,則表示未引用任何物件。

下面我用兩個例子說明它們的區別,這兩個例子是我在vs2005開放環境中編譯通過的:

新建乙個控制台應用程式:取名test1

class program

",val);

test(val);           

console.writeline("該變數此時的值為:",val);

console.read();

}static void test(int getval)       

int temp = 10;

getval = temp * 20;      }}

}命令提示符視窗得出的結果:

為了說明問題,再新建乙個控制台應用程式:取名test2

namespace test2

class datatypetest  

",objtest.val);

test(objtest);           

console.writeline("變數的值為:",objtest.val);           

console.read();

}static void test(datatypetest datatest)//這裡傳遞的是物件位址}}

命令提示符視窗得出的結果:

總結:特點

值型別   

引用型別

變數存放的內容

實際值引用

記憶體單元

內聯(堆疊)

堆預設值0空

傳遞給方法的引數

複製值複製引用

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

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

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

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

C 中值型別和引用型別

概念 1.值型別 資料儲存在記憶體的堆疊中,從堆疊中可以快速地訪問這些資料,因此,值型別表示實際的資料。2.引用型別 表示指向儲存在記憶體堆中的資料的指標或引用 包括類 介面 陣列和字串 c 中定義的值型別包括原型別 sbyte byte short ushort int uint long ulo...