文章大綱:
1.題目簡介
2.重點分析
3.知識拓展
1.題目簡介
輸入一個鏈表的頭結點,從尾到頭反過來打印出每個節點的值
2.重點分析
書上說除了函數,pHead仍然是空指針。卡那里把指針當參數直接傳進去,是改變不了指針的。還會造成問題。
下面幫助理解和分析
指針的指針圖解
那么怎么辦?
兩種方法:1.指針的指針 2.指針的引用
指針的指針做法
這里注意 要初始化一個指針為空,而不是初始化一個指針的指針為空。
我一開始以為,參數那里是兩顆星,那我這里也應該是初始化**(too young)
然后在傳入參數的時候是傳入指針的地址進去。&
指針的引用做法
這兩者的寫法區別不大,指針的引用就不用加&取地址符了,同時函數里面就是把pHead前面的*都去掉即可。
這兩種方法哪種更有優勢呢?
我去網上查閱資料的時候,看到是說指引的引用更好。
然后我做了一個測試,果然,用指針的指針還是會多浪費一個內存出來。
而用引用則一直在修改原來的對象,始終如一。
3.知識拓展
在使用返回值時,千萬別返回指向“棧內存”的指針、引用,因為該內存在函數結束時自動消亡了,返回的指針是個野指針了。例如
在函數中不定義數組,定義指針,示例:
此時的程序是正確的,但是有一點,此時分配的內存處于靜態區,是只可以讀取但是不可以修改的。