【问题标题】:Is it possible to get a pointer from an object returned by a nested function call?是否可以从嵌套函数调用返回的对象中获取指针?
【发布时间】:2011-09-07 22:49:14
【问题描述】:

作为我正在进行的 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

【问题讨论】:

    标签: c function pointers nested


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您为我澄清。我现在动态创建返回对象并返回一个指向它的指针:)
    • @LSJ:这几乎是不言而喻的,但记得在某个时候free它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2015-08-25
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多