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