C 深度解說值傳參和引用傳參的原理

2021-06-02 16:58:37 字數 747 閱讀 5937

例子一

using system; 

class element

class test

static

void main()

}

程式經編譯後執行輸出: 

10 100 

例子二

using system; 

class element

class test

static

void main()

}

程式經編譯後執行輸出: 

10 10

看到上面兩個例子,大家心裡都有乙個疑問那就是為什麼第乙個例子輸出了100 而第二個例子輸出的還是10。那就讓我給大家解答解答,

我們先了解一下值傳和引用傳的真正原理:

在經常情況下大家都會認為,值型別的引數就是傳值,引用型別的引數就是。其實不是這樣的。真正的原理是這樣,無論引數是什麼型別,值傳是引數前面不加ref或out,而引用傳參是在引數面前加上ref或out。

那麼第乙個例子為什麼number的值會變呢?因為在實參和形參存的都是同乙個記憶體位址,而物件又都存在託管堆記憶體中,無論你是通過形參還是實參都是修改這個記憶體中屬性的值,所以最後在第乙個例子中number變了。

C 引用方式傳參,傳值方式傳參( )

1 引用方式傳參 引用相當於是外部變數的別名,實際操作的就是該變數,即在函式內對該變數進行修改的話,在外部該變數也會相應被修改。外部變數的值也會被修改 void changeref int ref 2 傳值方式傳參 實際上是複製了乙個外部變數的副本進入函式中,在函式內操作的為該副本,對該變數的修改並...

c 引用傳參和變數傳參區別

引用傳參會改變這個引數本身的值,而變數傳參不會改變引數本身的值。引用還有乙個好處就是在傳遞引數的時候不會產生過多的記憶體拷貝,這在傳遞結構體或者類的時候,可以節省很多時間和空間。include using namespace std void fun1 int int void fun2 int i...

python 函式傳參 傳參和傳引用

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...