1. 程式人生 > >在資料結構中當建立二叉樹時候void CreateBiTree(BiTree &T);傳引數為什麼不能用指標而要用引用或指標的指標

在資料結構中當建立二叉樹時候void CreateBiTree(BiTree &T);傳引數為什麼不能用指標而要用引用或指標的指標

記得以前我們剛上資料結構,建立二叉樹的時候,void CreateBiTree(BiTree &T);引數傳遞的是一個指向結構體指標的引用,有一個人問過老師,他說要改變值必須要用引用,我感覺他這裡根本就沒跟我們講清楚,為什麼要用指標的引用呢?

後來我問了別人,自己想了一下,在C語言中,可能接觸過這樣一個例子,通過函式交換兩個變數的值,然後打印出來,我們知道這個通過指標是可以做到的,當然引用也是可以的。指標能夠改變原來兩個變數的值,為什麼到這裡就不行了呢void  CreateBiTree(BiTree T),同樣我這裡也是傳遞的是一個指標,而不能改變其值。

void CreateBiTree(BiTree T);剛開始建立的時候,實參傳進來的指標是為空的

,然後形參接受到實參傳進來的空指標,然後為形參分配記憶體空間,函式執行完畢,釋放為函式分配的記憶體空間,形參也隨之回收,這時候實參仍為空。所以在這裡要改變指標的值才行,而要改變指標的值必須要用指標的指標或指標的引用兩種方法都可以。

而void DeleteChild(BiTree T,BiTree p,int LR);這裡用指標就夠了,BiTree T這裡傳給形參本來就是有值的,不為空,當實參傳給形參時,對形參改變也會影響到本體。僅個人看法,如果有不正確的地方請指出,相互學習,謝謝!