C 函式中值的傳遞方式與實現原理分析

2021-10-05 16:48:42 字數 847 閱讀 9047

#include

using

namespace std;

//值傳遞

void

change1

(int n)

//引用傳遞

void

change2

(int

& n)

//指標傳遞

void

change3

(int

*n)int

main()

執行結果

1、值傳遞

change1(int n) 在傳入實參後在函式體內新定義了個int型區域性變數n 並且將它賦值為傳入的實參。也就是拷貝。

2、引用傳遞

首先我們先了

引用傳遞可以理解為直接傳入的這個值 即在函式體內部未新定義變數去接收這個值 ,未開闢新的空間。 它只是創造了乙個新的別名而已,要是在函式中有改變就會對原來的物件產生改變。

3、指標傳遞

指標傳遞其實和值傳遞一樣,只不過在函式體內定義的是乙個指標型變數 並將它賦值為傳入的位址 通過指標去訪問與修改資料

由於引用傳遞與指標傳遞的處理方式不同。因此,在引用傳遞的方式下,由於是直接引用的實參的位址,所以如果在被調函式中對該指標(即位址)進行修改,那麼新的位址就不再是原來的位址,因此原來實參的資訊就會發生丟失。

而指標傳遞是在被調函式中開闢了新區域並複製了乙份實參的位址,因此修改該指標(位址),並不會對實參的位址造成破壞。但由於引用傳遞未開闢新的記憶體區域,因此其執行效率會高,並且省空間。

C 中值傳遞與引用傳遞的區別

以值傳遞引數 當實參當作值來傳遞時,就產生了乙個新的拷貝。class test x static void fo int p p 程式執行結果為 p 9,x 8 即x的值不會受p影響,給p賦乙個新值並不會改變x的內容,因為p和x存在於記憶體中不同的位置。同理,用傳值的方式傳遞乙個引用型別物件時,只是...

C 中值傳遞 指標傳遞 引用傳遞的總結

1.值傳遞 void swap int a,int b int main int x 1 int y 2 swap x,y cout 輸出結果是2,1 2,1。實參x,y,形參a,b的位址同上,但是a,b的內容分別為0xffbef938 x的位址 0xffbef934 y的位址 a也就是0xffbe...

C 中值傳遞 指標傳遞 引用傳遞的總結

c 中值傳遞 指標傳遞 引用傳遞的總結 指標傳遞和引用傳遞一般適用於 函式內部修改引數並且希望改動影響呼叫者。對比值傳遞,指標 引用傳遞可以將改變由形參 傳給 實參 實際上就是直接在實參的記憶體上修改,不像值傳遞將實參的值拷貝到另外的記憶體位址中才修改 指標 引用傳遞的另外一種用法是 當乙個函式實際...