C - извлечение элементов из списка - PullRequest
0 голосов
/ 25 июля 2010

Я очень новичок в C и сейчас я застрял с простой проблемой.Я хочу получить i-й элемент списка, и у меня есть следующий API.Аргумент 'sp' указывает указатель на переменную, которой назначен размер области возвращаемого значения.

const void *tclistval(const TCLIST *list, int index, int *sp);

Список содержит значения uint64_t.Как получить i-й элемент?

PS Подробнее об этой функции:

Возвращаемое значение - указатель на область значения.Поскольку дополнительный нулевой код добавляется в конец области возвращаемого значения, возвращаемое значение может рассматриваться как символьная строка.если 'index' равен или больше чем количество элементов, возвращаемое значение равно 'NULL'.

1 Ответ

2 голосов
/ 25 июля 2010

Если вы знаете, что список содержит uint64_t элементов, то просто

int sp;
uint64_t elem;
elem = *(uint64_t *) tclistval(list, i, &sp);

sp будет содержать размер возвращаемого объекта, о котором вы уже знаете, так что вам не о чем беспокоитьсяоб этом.

Вы также можете сначала выполнить проверку ошибок:

uint64_t *pelem = tclistval(list, i, &sp);
if (pelem == NULL) { /* error! */ }
else
  elem = *pelem;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...