C 基礎 值型別引用型別(十一)

2022-09-03 06:24:07 字數 1405 閱讀 4084

值型別和引用型別:

值型別包括: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 }

畫圖演示:

引用傳遞示例:

1

class

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,...