作者Qoofate (大魯閣_最強打者)
看板C_and_CPP
標題[問題]函數return array pointer跟不return
時間Thu Apr 30 13:37:59 2015
請大大賜教 兩種寫法:
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