[问题] 函数return array pointer跟不return

楼主: 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~
作者: asilzheng (asil)   2015-04-30 13:48:00
第一个 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

Links booklink

Contact Us: admin [ a t ] ucptt.com