在C 中指標和引用傳值區別

2021-08-02 03:42:02 字數 981 閱讀 9774

筆者介紹:姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3d遊戲引擎》電子工業出版社和《unity3d實戰核心技術詳解》電子工業出版社等。

在c ++中,我們可以通過指標或引用將引數傳遞給函式,在這兩種情況下,我們可以得到相同的結果。 所以下列問題是不可避免的: 什麼時候是優先於另乙個?

#include using namespace std;

void swap(int* x, int* y)

int main()

output:

before swap

a = 45 b = 35

after swap with pass by pointer

a = 35 b = 45

#include using namespace std;

void swap(int& x, int& y)

int main()

output:

before swap

a = 45 b = 35

after swap with pass by reference

a = 35 b = 45

引用通常使用指標來實現,引用是相同的物件,只是使用不同的名稱,引用必須引用乙個物件。 由於引用不能為null,所以它們更安全。

1、指標可以重新分配,而引用不能,只能在初始化時分配。

2、指標可以直接分配null,而引用不能。

3、指標可以遍歷陣列,我們可以使用++去指向下乙個項。

4、指標是儲存記憶體位址的變數, 引用具有與引用的項相同的記憶體位址。

5、指向類/ 結構體的指標使用' - >'(箭頭運算子)來訪問它的成員,而引用使用'.'(點運算子)。

傳值和傳引用 傳指標的區別

傳值,是把實參的值賦值給行參,那麼對行參的修改,不會影響實參的值 傳位址,是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如 int,那麼傳位址以後,實參和行參都 指向同乙個物件 傳引用,真正的以位址的方式傳遞引數,傳遞以後,行參和實參 都是同乙個物件 只是他們名字不同而已,對行參的修改將影響實...

傳值 傳指標和傳引用的區別

傳值 void myswap int a,int b 傳指標 1 void myswap int a,int b 2 void myswap int a,int b 引用傳遞 void myswap int a,int b 函式傳值 傳值實際上是在子函式的棧裡面重新開闢乙個空間儲存傳進來的實參引數值...

函式傳值 傳指標和傳引用區別

函式傳值 傳值實際上是在子函式的棧裡面重新開闢乙個空間儲存傳進來的實參引數值,所以在子函式內對子函式的形參引數進行操作 賦值之類的 只是改變了子函式那個棧裡面的記憶體值,原函式的值並不會被改變,因為原函式的變數記憶體並未改變。指標傳值 情況1,原函式指標指向的值並沒有發生改變,對兩個指標操作相當於改...