数据结构中的链表



temp是指向结构体node的指针。temp->nextNULL。那么temp->next->next的值是多少呢?

简而言之,NULL->next的值是多少?它是编译器依赖,因为我看到不同的结果在ubuntu和代码块(windows)?

下面程序的输出是什么?

 struct node
 {
  int data;
   struct node *next;
 };
 main()
 {
   struct node *temp,*p;
   int c=0;
   temp=(struct node *)malloc(sizeof(struct node));
   temp->data=50;
   temp->next=NULL;
   p=temp;
   if(p->next->next==NULL)//will it enter the if loop?
      c++;
   printf("%d",c);
  }

NULL->next必须给出一个段错误。

你可能想要这样写:

if(p->next != NULL && p->next->next==NULL)

if(p->next == NULL || p->next->next==NULL)

如果temp->next是NULL,解引用它来获得temp->next->next是未定义的行为。崩溃是可能的,但其他事情也可能发生。原则上,任何都可能发生。

相关内容

  • 没有找到相关文章