值型別和引用型別:
值型別包括:byte,short,int,long,char,float,double,bool,struct結構
引用型別包括:類型別,介面型別和陣列 等。
值型別和引用型別特點:
1.值型別的變數儲存的是原始值,即它代表的值本身。
2.值型別不管是否賦值都會在棧記憶體中開記憶體。
引用型別當宣告乙個變數,在棧中分配乙個記憶體存放位址,而此時並沒有為其分配堆上的記憶體空間。當使用new建立乙個物件例項的時候,分配堆上的空間,並且把堆上的位址值傳給引用,賦值給棧中開的空間。
值傳遞 和引用傳遞:
1.基本資料型別傳值,對形式引數修改不會影響實參;
2.引用型別傳引用,形式引數和實際引數指向同乙個位址(同乙個物件,同一塊堆記憶體空間),所以對實際引數的修改會影響到實際引數的物件。
3.string ,integer, double等是特殊型別處理,雖然是引用型別,但是也是按照值型別的情況傳遞,結果不會修改實際引數。
1畫圖演示:static
void main(string
args)
2-------num2
",num1,num2);
6change(num1, num2);
7 console.writeline("
num1:-------num2
", num1, num2);8//
兩次輸出結果一樣9}
1011
static
void change(int a, int
b)12
, b=
",a,b);
14int temp =a;
15 a =b;
16 b =temp;
17 console.writeline("
a = , b=
", a, b);
18 }
引用傳遞示例:
1class
program213
14static
void
test(person p)
1518}19
//只寫乙個欄位做示例
c 基礎 值型別和引用型別
c 中有兩種型別的資料,一種是值型別資料,一種是引用型別資料。首先說說什麼型別是值型別,例如 int float bool之類的基礎型別,以及用struct定義的型別,如 datetime。除此外,如string,陣列,以及用class定義的型別等都是引用型別。具體對比如下 值型別引用型別 記憶體分...
C 基礎 值型別和引用型別
struct型別 由一系列具有相同型別或不同型別的資料構成的資料集合 static void main string args struct person enmu型別 使用關鍵字const建立常量,建立常量時必須設定其初始值,一旦設定不允許修改。char只定義乙個unicode字元 string類...
C 值型別,引用型別
2,引用型別 概念 值型別直接儲存其值,而引用型別儲存對其值的引用。引用型別 string,class,陣列 派生於system.array 委託 派生於system.delegate 介面。引用型別當宣告乙個類時,只在棧中分配一小片記憶體用於容納乙個位址,而此時並沒有為其分配堆上的記憶體空間。3,...