Можно ли получить указатель от объекта, возвращенного вызовом вложенной функции? - PullRequest
0 голосов
/ 08 сентября 2011

Как часть проекта программирования на 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 Ответ

1 голос
/ 08 сентября 2011

Возвращаемое значение функции временно, это не именованный объект (грубо говоря, это определение lvalue). Вы не можете взять адрес временного объекта, потому что он на самом деле не существует.

Конечно, вы можете вернуть указатель из функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...