2010-07-25 95 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 2010-07-25 11:38:02