作为我正在做的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
答案 0 :(得分:1)
函数的返回值是临时的,它不是命名对象(粗略地说,这是lvalue
的定义)。您不能获取临时对象的地址,因为它实际上并不存在。
当然,您可以从函数返回一个指针。