带有此表单列表的链接列表/指针[0]

时间:2016-04-02 07:32:54

标签: c pointers linked-list

我正在使用C中的链接列表,我遇到了这个问题:我不理解以下声明。 这是我的链表的结构

typedef struct node {
   int value; 
   struct node *next;
} node;

以下是我正在处理的代码:

void reverse(reverse **list)`void reverse(reverse **list)
{
    struct node * prev = NULL;
    struct node * next;
    struct node * current = list[0];
    while(current!= NULL)
    {
        next = current­>next;
        current­>next = prev;
        prev = current;
        current = next ;
    } 
    list[0] = prev; ­­­­­­­­­­­­­­­­­­­­­­­­­
}

列表[0]是什么意思?它是我链接列表的第一个元素吗? 我知道我的问题似乎很愚蠢,但我无法在任何地方找到答案。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

list[0]是指向第一个节点的指针,list是指向该指针的指针。

list[0]*(list+0)相同,与*(list)*list相同。

它只是一种不同的语法形式,并不意味着list指向数组。

指向第一个节点的指针的地址被传递给函数reverse。然后指向指针的指针被解除引用(*list),因此函数外部的原始指针被修改。如果你不这样做,原始指针不会改变,它将不再指向列表的开头。