关于结构体指针p、p->value、p->next三者的关系

p是一个结构体指针,p->value是p所指向的结构体的数据域,p->next是p所指向的结构体的指针域,那他们三者之间的关系是什么?p->next与p->value以及p三者的地址相同吗?p与p->next可以相互赋值,但它们为什么可以相互赋值呢?

第1个回答  推荐于2016-02-10
#include <stdio.h>
struct node
{
//double sum;
int value;
node* next; //next的类型是node型的指针即node*
};
int main()
{
node *p=new node(); //从这里可以看出 p的类型与next 类型相同 ,所以可以相互赋值
p->value=3; //首先 p->value的类型是value的类型,在这里就是int型,不是一个指针
p->next=0;
/*因为p是指向结构体开始的位置,所以这里p的地址和p->value的地址(不是p->value的值)
应该相等,但是并不总是相等,例如在结构体中多定义一个结构他们就不相等了。至于p-next
的地址,如果它不是结构开始的位置就不等于p*/
node *p1=new node();
p1->value=4;
p1->next=p;

node* p2=p1;
while(p2!=NULL)
{
printf("%d\n",p2->value);
p2=p2->next;
}
return 0;
}追问

tail是尾指针,{tail->next=p;tail=p}这两条语句的含义又是什么呢?

追答

虽然我没有看到完整的代码,不过应该是在链表尾部加入一个节点。

本回答被提问者和网友采纳
相似回答