指向不在C中列表中的项

指向不在C中列表中的项,c,list,dynamic,data-structures,C,List,Dynamic,Data Structures,我有一个保存值的列表:25、30、45、60、65、80、90 我很好奇如果我实现表达式ptr2->next->next会发生什么,因为ptr2指向值80。因为这个表达式指向的是90之后的值,所以我应该接收0还是错误代码?ptr2->next->next是一个指针,而不是一个值,它将指向NULL(如果以这种方式构造节点),或者指向一些垃圾。在这两种情况下,尝试取消引用都会导致未定义的行为。链表中的最后一个元素应该具有next=NULL;这就是你如何表示它是列表的结尾。因此ptr2->next->

我有一个保存值的列表:25、30、45、60、65、80、90


我很好奇如果我实现表达式ptr2->next->next会发生什么,因为ptr2指向值80。因为这个表达式指向的是90之后的值,所以我应该接收0还是错误代码?

ptr2->next->next
是一个指针,而不是一个值,它将指向
NULL
(如果以这种方式构造节点),或者指向一些垃圾。在这两种情况下,尝试取消引用都会导致未定义的行为。

链表中的最后一个元素应该具有
next=NULL
;这就是你如何表示它是列表的结尾。因此
ptr2->next->next
将返回
NULL
,即
0


如果您随后尝试遵从这一点,例如
ptr2->next->next->next
,您将调用未定义的行为。在大多数系统上,这将导致应用程序崩溃,例如Linux上的
分段冲突。但C规范并不能保证这一点;当您尝试取消引用空指针时,任何事情都可能发生。

如果您的列表是一个常规(单数)列表,那么
ptr2->next->next
将指向
null

为什么您不自己动手查找呢?