2010-07-25 2 views
0

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

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

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

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

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

ответ

2

Если вы знаете, что список содержит 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; 
+0

спасибо за вашу помощь – mkn

Смежные вопросы