作者Hyozero (1)
看板C_and_CPP
標題[問題] 傳空List進function,產生新List
時間Tue May 23 01:55:27 2017
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1495475731.A.93A.html
1F:推 LPH66: 這樣你傳進 NewList 裡的就必要要是指標的指標 05/23 02:22
2F:→ LPH66: bool NewList(List **phead); 05/23 02:22
3F:→ LPH66: 或是指標的參考 bool NewList(List *&head); 05/23 02:23
5F:推 cuteSquirrel: 推 一樓的解法。 05/23 02:35
6F:→ cuteSquirrel: Reference 很實用。 05/23 02:37
8F:→ pttworld: 函數回傳指標的方式似乎是古老寫法。 05/23 09:00
9F:→ pttworld: 修正上述連結無論如何回傳head,免得有空間被洗掉。 05/23 09:06
10F:推 Raymond0710: 至底13戒-13 05/23 17:52
11F:→ Hyozero: 請問pttworld大,您連結裡改return head的差別是? 05/24 20:25
12F:→ hunandy14: 推薦把 new 跟 apeend 函式拆開寫會比較好~ 05/26 13:17
14F:→ hunandy14: 沒事~好像看錯了你只是在建頭而已 05/26 13:19