值传递 引用传递(传地址,传引用)的区别
? 傳值 ??
??是把實(shí)參的值賦值給行參? ?
??那么對行參的修改,不會(huì)影響實(shí)參的值? ?
? ??
??傳地址? ?
??是傳值的一種特殊方式,只是他傳遞的是地址,不是普通的如int? ?
??那么傳地址以后,實(shí)參和行參都指向同一個(gè)對象? ?
? ??
??傳引用? ?
??真正的以地址的方式傳遞參數(shù)? ?
??傳遞以后,行參和實(shí)參都是同一個(gè)對象,只是他們名字不同而已? ?
??對行參的修改將影響實(shí)參的值
-----------------------------------------------------------------------------------
覺得從函數(shù)調(diào)用的角度理解比較好? ?
? ??
??傳值:? ?
??函數(shù)參數(shù)壓棧的是參數(shù)的副本。? ?
??任何的修改是在副本上作用,沒有作用在原來的變量上。? ?
? ??
??傳指針:? ?
??壓棧的是指針變量的副本。? ?
??當(dāng)你對指針解指針操作時(shí),其值是指向原來的那個(gè)變量,所以對原來變量操作。? ?
? ??
??傳引用:? ?
??壓棧的是引用的副本。由于引用是指向某個(gè)變量的,對引用的操作其實(shí)就是對他指向的變量的操作。(作用和傳指針一樣,只是引用少了解指針的草紙)??
-----------------------------------------------------------------------------------
函數(shù)參數(shù)傳遞機(jī)制的基本理論? ?
?? 函數(shù)參數(shù)傳遞機(jī)制問題在本質(zhì)上是調(diào)用函數(shù)(過程)和被調(diào)用函數(shù)(過程)在調(diào)用發(fā)生時(shí)進(jìn)行通信的方法問題。基本的參數(shù)傳遞機(jī)制有兩種:值傳遞和引用傳遞。以下討論稱調(diào)用其他函數(shù)的函數(shù)為主調(diào)函數(shù),被調(diào)用的函數(shù)為被調(diào)函數(shù)。? ?
?? 值傳遞(passl-by-value)過程中,被調(diào)函數(shù)的形式參數(shù)作為被調(diào)函數(shù)的局部變量處理,即在堆棧中開辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進(jìn)來的實(shí)參的值,從而成為了實(shí)參的一個(gè)副本。值傳遞的特點(diǎn)是被調(diào)函數(shù)對形式參數(shù)的任何操作都是作為局部變量進(jìn)行,不會(huì)影響主調(diào)函數(shù)的實(shí)參變量的值。? ?
?? 引用傳遞(pass-by-reference)過程中,被調(diào)函數(shù)的形式參數(shù)雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時(shí)存放的是由主調(diào)函數(shù)放進(jìn)來的實(shí)參變量的地址。被調(diào)函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實(shí)參變量。正因?yàn)槿绱?#xff0c;被調(diào)函數(shù)對形參做的任何操作都影響了主調(diào)函數(shù)中的? ?
??實(shí)參變量。? ?
-----------------------------------------------------------------------------------
僅討論一下值傳遞和引用傳遞:? ?
??所謂值傳遞,就是說僅將對象的值傳遞給目標(biāo)對象,就相當(dāng)于copy;系統(tǒng)將為目標(biāo)對象重新開辟一個(gè)完全相同的內(nèi)存空間。? ?
??所謂引用,就是說將對象在內(nèi)存中的地址傳遞給目標(biāo)對象,就相當(dāng)于使目標(biāo)對象和原始對象對應(yīng)同一個(gè)內(nèi)存存儲(chǔ)空間。此時(shí),如果對目標(biāo)對象進(jìn)行修改,內(nèi)存中的數(shù)據(jù)也會(huì)改變。
?
轉(zhuǎn)自:http://www.cnitblog.com/guopingleee/archive/2009/02/16/54597.html
轉(zhuǎn)載于:https://www.cnblogs.com/xuewangkai/p/11152377.html
總結(jié)
以上是生活随笔為你收集整理的值传递 引用传递(传地址,传引用)的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】C++的拷贝控制
- 下一篇: DFS(二):骑士游历问题