楼主:
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