【发布时间】:2012-08-12 01:51:56
【问题描述】:
可能重复:
pointer as second argument instead of returning pointer?
我经常看到这个:
Monkey* test = malloc(sizeof(Monkey));
Monkey_New(test);
让init函数返回指针不是更简洁吗?
Monkey* test = Monkey_New();
为什么经常使用第一种方式?
【问题讨论】:
-
如果您的第一个替代代码在
test的定义和对Monkey_New的调用之间包含诸如test = malloc(sizeof *test);之类的内存分配,那么您应该显示它。否则,此代码是无意义的,因为它将未初始化的对象传递给 Monkey_New。 -
你的第一个例子是错误的。它应该是 Monkey_New(&test)。否则不可能在“Monkey_New”函数中分配指针,该函数只接收作为参数给出的指针的副本。
-
是的,从来没有解决过这个问题......哎呀