簡體   English   中英

無效*指向清單中的無效*

[英]void * pointing to void * in a list

我有一個像這樣的清單:

void * head = [void * a] --> [void * b] --> [void * b] --> NULL

給定void * head ,我如何遍歷列表?

每個void *指向另一個void * ,列表中的最后一項指向NULL

我認為我需要使用void ** ,但我不確定。 列表中的每個項目都不在連續內存中。

我有這樣的清單[...]

這不完全是一個列表-它是一個多級指針,在編譯時級別未知。

我想我需要使用void ** ,但我不確定

是的,你是對的! 您可以一次取消引用指針的一級。

您可以執行以下操作:

  • 設置while循環,當headNULL時結束
  • 在循環內部,使void **next並為其分配head
  • 現在取消引用 ,然后將結果分配給head ,如下所示: head = *next
  • 繼續循環,直到headNULL

循環的每次迭代都會刪除另一個間接級別,直到到達最終指針為止。

void *node = head;
while(node) {
    // do stuff with the node
    node = *((void**)node);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM