看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 問題(Question): 給定一個function的定義: bool NewList(List *head); head為一個list的first node,但故意傳一個空的list(head本身就是NULL), 要在function NewList裡面產生一個新node,將它接到傳進來的head, 並讓function NewList外面也能夠使用這個產生的新node 程式碼(Code):(請善用置底文網頁, 記得排版) https://ideone.com/YgH27x 如上程式碼 考慮到新node要在function外也能使用,因此使用動態記憶體配置的方式產生新node。 但是第33行,把head指向新node,這樣仍然只能在function內使用新node, 第45行的OneNode還是指向NULL,無法使用到function NewList裡面產生的新node, 請問有什麼方法可以達成嗎? 期盼能得到板上大大的指教 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.228.65 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1495475731.A.93A.html
LPH66: 這樣你傳進 NewList 裡的就必要要是指標的指標 05/23 02:22
LPH66: bool NewList(List **phead); 05/23 02:22
LPH66: 或是指標的參考 bool NewList(List *&head); 05/23 02:23
cuteSquirrel: https://ideone.com/frgL1N 05/23 02:30
cuteSquirrel: 推 一樓的解法。 05/23 02:35
cuteSquirrel: Reference 很實用。 05/23 02:37
pttworld: http://codepad.org/ZEMLvtq4 05/23 08:59
pttworld: 函數回傳指標的方式似乎是古老寫法。 05/23 09:00
pttworld: 修正上述連結無論如何回傳head,免得有空間被洗掉。 05/23 09:06
Raymond0710: 至底13戒-13 05/23 17:52
Hyozero: 請問pttworld大,您連結裡改return head的差別是? 05/24 20:25
hunandy14: 推薦把 new 跟 apeend 函式拆開寫會比較好~ 05/26 13:17
hunandy14: http://ideone.com/MRWRtn 這樣 main 比較好操作 05/26 13:18
hunandy14: 沒事~好像看錯了你只是在建頭而已 05/26 13:19