我有一个这样的清单:
void * head = [void * a] --> [void * b] --> [void * b] --> NULL
鉴于void * head
,如何遍历列表?
每个void *
指向另一个void *
,列表中的最后一项指向NULL
。
我想我需要使用void **
,但我并不完全确定。列表中的每个项目都不在连续的内存中。
答案 0 :(得分:1)
我有一个像这样的列表[...]
这不完全是一个列表 - 它是一个多级指针,在编译时级别未知。
我想我需要使用
void **
,但我并不完全确定
是的,你是对的!您可以一次取消引用一个指针。
以下是您可以做的事情:
while
循环,该循环在head
为NULL
void **next
,并为其指定head
head
,如下所示:head = *next
head
为NULL
。循环的每次迭代都会删除另一个间接级别,直到到达最终指针。
答案 1 :(得分:0)
void *node = head;
while(node) {
// do stuff with the node
node = *((void**)node);
}