在函數(shù)調(diào)用時(shí) 用指針或者引用做參數(shù),表示把變量的地址傳遞給子函數(shù),但是子函數(shù)只能修改指針?biāo)缸兞康闹担⒉荒苄薷闹羔樀闹赶颉?/p> 如果想用修改指針的指向,就要用指針的指針,或者指針的引用。 大部分情況下,用指針和引用做參數(shù),只是想要修改指針?biāo)缸兞康闹?,并沒有想修改指針的指向。 但是如果指針?biāo)傅倪@塊內(nèi)存在調(diào)用子函數(shù)結(jié)束之后發(fā)生了改變,那就要用指針的引用或者指針的指針。 下面舉幾個(gè)典型的例子: 例子一: 鏈表做參數(shù)時(shí),其實(shí)就是頭結(jié)點(diǎn)的指針,在遍歷,查找這種操作做子函數(shù)時(shí),鏈表不會(huì)發(fā)生改變,那就用頭結(jié)點(diǎn)的指針做參數(shù)就可以了。 但是在增加,修改,刪除這種操作時(shí),鏈表會(huì)發(fā)生改變,這就表示頭結(jié)點(diǎn)指針?biāo)傅倪@塊內(nèi)存會(huì)發(fā)生改變,也就是指針的指向可能會(huì)發(fā)生改變,這種情況下就要頭指針的引用。 在二叉樹和圖的子函數(shù)調(diào)用中是同樣的道理,如果子函數(shù)會(huì)修改二叉樹和圖,那就要用指針的引用。 那塊內(nèi)存在主函數(shù)已經(jīng)申請(qǐng)好了,但是在子函數(shù)中大小變了。 例子二: 在主函數(shù)中定義了一個(gè)指針,要將這個(gè)指針做參數(shù)傳給子函數(shù),在子函數(shù)中開辟兩兆內(nèi)存,這個(gè)時(shí)候一定要用指針的引用。 因?yàn)橹羔標(biāo)傅倪@塊內(nèi)存發(fā)生了改變,或者說(shuō)指針的指向發(fā)生了改變。 主函數(shù)中只是定義了一個(gè)指針,并沒有真正開辟內(nèi)存,子函數(shù)中才真正開辟內(nèi)存,指針指向哪才明確下來(lái)。 如果你有時(shí)候不清楚該不該用變量的引用做參數(shù),那就記住一點(diǎn): 用指針的引用總是沒有問(wèn)題的。因?yàn)閭鬟f變量的地址比傳遞變量本身總是改的快。 |
|
來(lái)自: 靜謐風(fēng)霜 > 《編程》