设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);
}
NULL->next必须给出一个段错误。
你可能想要这样写:
if(p->next != NULL && p->next->next==NULL)
或
if(p->next == NULL || p->next->next==NULL)
如果temp->next
是NULL,解引用它来获得temp->next->next
是未定义的行为。崩溃是可能的,但其他事情也可能发生。原则上,任何都可能发生。