是否可以从嵌套函数调用返回的对象中获取指针?

时间:2011-09-07 22:49:14

标签: c function pointers nested

作为我正在做的C编程项目的一部分,我需要创建自己的动态阵列系统。

由于我的数组系统在添加对象时从指针复制数据,我想通过将指针传递给函数中加载的对象来保持开销,而不是静态加载对象并复制通过将数据添加到数组之后的内存。

我无法理解为什么这不起作用:

some_obj_ptr = (OBJTYPE *)array_push(obj_list_ptr, &(load_item_from_file("rsrc\\item.txt")));

我能做些类似的事吗?我为该行获得的编译错误是

lvalue required as unary '&' operand.

我的array_push功能的原型是:

void *array_push(ARRAY *array, void *object);

有什么想法吗?

LJ

1 个答案:

答案 0 :(得分:1)

函数的返回值是临时的,它不是命名对象(粗略地说,这是lvalue的定义)。您不能获取临时对象的地址,因为它实际上并不存在。

当然,您可以从函数返回一个指针。