假设temp
是指向结构node
的指针。 temp->next
是NULL
。那么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);
}
答案 0 :(得分:1)
如果temp->next
为NULL,则取消引用它以获取temp->next->next
为undefined behavior。可能发生崩溃,但其他事情可能会发生。原则上,任何都可能发生。
不要取消引用空指针。
答案 1 :(得分:1)
NULL-> next必须给你一个段错误。
您可能希望拥有以下内容:
if(p->next != NULL && p->next->next==NULL)
或
if(p->next == NULL || p->next->next==NULL)