2010-07-25 71 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