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

2021-07-28 03:14:13 字數 732 閱讀 8339

傳值,

是把實參的值賦值給行參,

那麼對行參的修改,

不會影響實參的值

傳位址,

是傳值的一種特殊方式,只是他傳遞的是位址,不是普通的如

int,

那麼傳位址以後,實參和行參都

指向同乙個物件

傳引用,

真正的以位址的方式傳遞引數,

傳遞以後,行參和實參

都是同乙個物件

,只是他們名字不同而已,

對行參的修改將影響實參的值。

傳遞引用與傳指標、傳值的區別?

(1)傳遞引用給函式與傳遞指標的效果是一樣的。這時,被調函式的形參就成為原來主調函式中的實參變數或物件的乙個別名來使用,所以在被調函式中對形參變數的操作就是對其相應的目標物件(在主調函式中)的操作。

(2)使用引用傳遞函式的引數,在記憶體中並沒有產生實參的副本,它是直接對實參操作;而使用一般變數傳遞函式的引數,當發生函式呼叫時,需要給形參分配儲存單元,形參變數是實參變數的副本;如果傳遞的是物件,還將呼叫拷貝建構函式。因此,當引數傳遞的資料較大時,用引用比用一般變數傳遞引數的效率和所佔空間都好。

(3)使用指標作為函式的引數雖然也能達到與使用引用的效果,但是,在被調函式中同樣要給形參分配儲存單元,且需要重複使用"*指標變數名"的形式進行運算,這很容易產生錯誤且程式的閱讀性較差;另一方面,在主調函式的呼叫點處,必須用變數的位址作為實參。而引用更容易使用,更清晰。

從本質上來說,傳值和傳指標都是傳值方式,除了傳引用之外。

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

傳值 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,原函式指標指向的值並沒有發生改變,對兩個指標操作相當於改...

傳值 傳引用 傳指標

收藏 相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資...