看板 C_and_CPP 關於我們 聯絡資訊
請大大賜教 兩種寫法: 1. main() { char* buf; buf=malloc(2048*sizeof(char)); func(buf); printf(buf); //試印出buf內容 但為空 } void func(char* buf ) { buf= SetArray(); // 回傳一個 char * pointer給buf } 此法不work 2. main() { char* buf; buf=malloc(2048*sizeof(char)); buf=func(buf); printf(buf); //試印出buf內容 ok } char* func(char* buf ) { buf= SetArray(); // 回傳一個char * pointer給buf return buf; } 第一種不行 但第二種可以 請問我第一種可能是因為哪邊不合規定嗎 或者這樣做法根本是錯誤的 Thank you~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.48.108 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430372283.A.812.html
asilzheng: 第一個 func(&buf); void func(char **buf) 04/30 13:48
asilzheng: *buf = SetArray(); 04/30 13:49
asilzheng: 你得把原本的 address 傳給 func 才修改得到原值 04/30 13:50
wenyonba: 看看置底13誡的第13項,應該就懂,因為你傳進去的是指標的 04/30 13:51
wenyonba: 複本,不然你就得傳指標的指標進去才行~~ 04/30 13:52
Qoofate: 感謝asilzheng大 , it works! 04/30 13:53
Qoofate: 我再思考一下 為何要用雙重指標 04/30 13:54
Caesar08: 用void func(char *&buf) 04/30 14:14
Feis: 實際上兩個都有問題 04/30 15:05
koka813: 要是只有這種資訊,2的寫法也會memory leak 04/30 18:38