如何访问C中链表中下一个元素的旁边?

Waf*_*eeq 1 c pointers linked-list

我正在学习C并且感到困惑.例如:

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

entry n1, n2, n3;
int i;

n1.value = 100;
n2.value = 200;
n3.value = 300;

n1.next = &n2;
n2.next = &n3;
Run Code Online (Sandbox Code Playgroud)

n2节点的值可以通过(*n1.next).value或通过访问n1.next->value.有用.但是,假设我想通过以下方式直接访问该n3值:

(n1.next).next -> value

(*(n1.next).next).value
Run Code Online (Sandbox Code Playgroud)

编译器抱怨

error: request for member `next' in something not a structure or union
Run Code Online (Sandbox Code Playgroud)

为什么这样?

use*_*751 6

因为你错过了一个*.它应该是:

(*(*n1.next).next).value
    ^^                   first node
  ^^^^^^^^^^             second node
^^^^^^^^^^^^^^^^^^       third node
^^^^^^^^^^^^^^^^^^^^^^^^ third node's value
Run Code Online (Sandbox Code Playgroud)

或者n1.next->next->value简而言之.