在c语言中双链表中使用的两级指针有什么优势?

时间:2013-12-31 09:46:05

标签: c pointers nginx

nginx中的每个工作进程都有一个已发布的事件队列。 ngx_event_t有两个指针,next和prev:

/* the links of the posted queue */
ngx_event_t *next;
ngx_event_t **prev;

nginx使用这两个指针实现发布的事件队列,下一个指向下一个事件,prev指向前一个事件的下一个指针。 后期操作:

ev->next = (ngx_event_t *) *queue;  
ev->prev = (ngx_event_t **) queue;        
*queue = ev;                   
if (ev->next) {                                                       
    ev->next->prev = &ev->next;                                      
} 

删除操作:

*(ev->prev) = ev->next;  
if (ev->next) {              
    ev->next->prev = ev->prev;
}

为什么prev使用两级指针类型?有什么好处?

1 个答案:

答案 0 :(得分:0)

指针的级别取决于您如何访问存储在指针变量中的内存地址。如果要从指针引用它,则需要单指针。如果要从指针指向指针,则需要双指针,依此类推。在你的情况下,你从指针指针取消引用它,这就是你需要双指针的原因。