c - 如何在 C 中访问链表中的下一个元素?

标签 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;

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

(n1.next).next -> value

(*(n1.next).next).value

编译器提示

error: request for member `next' in something not a structure or union

为什么会这样?

最佳答案

因为您缺少 *。应该是:

(*(*n1.next).next).value
    ^^                   first node
  ^^^^^^^^^^             second node
^^^^^^^^^^^^^^^^^^       third node
^^^^^^^^^^^^^^^^^^^^^^^^ third node's value

或简称为n1.next->next->value

关于c - 如何在 C 中访问链表中的下一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38347645/

相关文章:

c++ - 成功分配的数组太大时访问指针时出错

c - 使用链表从文件中获取数据

循环链表在尝试打印时崩溃

c - 如何正确比较 C 中的字符串?

java - 在不同多核处理器上进行测试的速度标准化

c# - 最快的数组寻址

arrays - 指针数组

C - 包含链表的数组

c - 未初始化的变量如何获得随机值?

c - 子进程中的 Execl() 和父进程中的 wait()