为什么不能像这样访问链表中的指针?

时间:2016-12-14 13:30:19

标签: c linked-list

我声明节点如下,

typedef struct slinkedlist {
    int data;
    struct slinedlist *next;
} node;

我的代码中有临时指针node * tmp,为什么我无法访问tmp->next->next

/ *添加了代码* /

   typedef struct slinkedlist {
        int data;
        struct slinedlist *next;
    } node;


    node *start;

/* Assume I have 5 nodes in a list */

    void ex(void)
    {
        node *tmp;

        tmp = start->next->next; /* This will be error in C , explain me, why? */

        /* But this works fine */
        tmp = start->next;
        tmp = tmp->next;
    }

如果我访问start-> next-> next?

,我将会收到错误

1 个答案:

答案 0 :(得分:1)

一旦tmp指向最后一个节点,tmp-> next将为null,使得tmp-> next-> next将导致空指针解除引用。