作者:
Qoofate (大魯閣_最強打者)
2015-04-30 13:37:59請大大賜教 兩種寫法:
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~
第一個 func(&buf); void func(char **buf)*buf = SetArray();你得把原本的 address 傳給 func 才修改得到原值
作者:
wenyonba (射後不理很XX啊!!!!)
2015-04-30 13:51:00看看置底13誡的第13項,應該就懂,因為你傳進去的是指標的複本,不然你就得傳指標的指標進去才行~~
作者:
Qoofate (大魯閣_最強打者)
2015-04-30 13:53:00感謝asilzheng大 , it works!我再思考一下 為何要用雙重指標
作者:
Caesar08 (Caesar)
2015-04-30 14:14:00用void func(char *&buf)
作者:
Feis (永遠睡不著 @@)
2015-04-30 15:05:00實際上兩個都有問題
作者:
koka813 (shift)
2015-04-30 18:38:00要是只有這種資訊,2的寫法也會memory leak