C 值傳遞和引用傳遞詳解

2021-08-07 04:47:43 字數 796 閱讀 6517

本文章僅為個人學習總結,如有錯誤請指正。

首先區分,引用傳遞和引用型別無關,值傳遞和值型別無關。

建議自己定義乙個類,通過類來感受一下引用傳遞和值傳遞的區別。

out和ref都可以實現引用傳遞,但是之間的區別通過引數修飾符的文章進行全面了解。

通過兩個demo說明:

引用傳遞和值傳遞最大的區別為能否改變所引用的物件,當乙個實參傳遞給函式時,在函式內部對實參進行了重新賦值後,是否可以將位址的引用重新傳遞給實參。

demo1:

當傳遞的是引用型別的變數時,引用傳遞和值傳遞的區別:

string字串使用了ref後,變為了引用傳遞。

private void button1_click(object sender, eventargs e)

//值傳遞

public void processstrupper(string str)

//引用傳遞

public void processstrlower(ref string str)

demo2:

當傳遞為值型別的變數時,,引用傳遞和值傳遞的區別:

private void button2_click(object sender, eventargs e)

//值傳遞

public void processintadd(int num)

//引用傳遞

public void processintsub(ref int num)

C 值傳遞 指標傳遞 引用傳遞詳解

值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變影響呼叫者時,採用值傳遞。指標傳遞 形參為指向實參位址的指標,當對形參的指向操作時,就相當於對實參本身進行的操作.引...

C 值傳遞 指標傳遞 引用傳遞詳解

最近寫了幾篇深層次討論陣列和指標的文章,其中提到了 c語言中,所有非陣列的形式引數傳遞均以值傳遞形式 而關於值傳遞,指標傳遞,引用傳遞這幾個方面還會存在誤區,所有我覺的有必要在這裡也說明一下 下文會通過例子詳細說明哦 值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來...

C 值傳遞 指標傳遞 引用傳遞詳解

而關於值傳遞,指標傳遞,引用傳遞這幾個方面還會存在誤區,所有我覺的有必要在這裡也說明一下 下文會通過例子詳細說明哦 值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來說,值傳遞是單向的 實參 形參 引數的值只能傳入,不能傳出。當函式內部需要修改引數,並且不希望這個改變...