c++链表中,fence=fence->next,指针fence->next是什么意思

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:07:52
一般学过的是
int b= 1;
int *p=b;
是在无法理解指针再指向指针是什么意思,望高手解惑
不能直接写成fence=next吗?为什么还要写成fence=fence->next

next是指向下一个节点的指针.
fence是指向当前节点的指针.
这两个指针在一起,构成一个节点.

不是指针再指向指针,是指针给指针赋值,指针变量的内容是一个地址值.
一个指针被另一个指针赋值,就是说被赋值的指针的内容被赋予了新的地址值,这个地址和给他赋值的指针所指向的地址相同.

就是说,两个指针指向了同一个地址.

那么fence->next就是说fence的next.
fence指向当前节点,当前节点有个指针next,指针next指向下一个节点,它也是下一个节点的fence指针.
那么回去看fence=fence->next就是说fence指针,被他自己所指向的节点的next指针赋值了.这个next指针指向fence指向的节点的下一个节点.所以,fence指向了它的下一个节点.

直接fence=next的话,这个next是哪个节点的next?

因为fence指向的是节点类型数据。
一般链表的节点是如下类型
typedef struct(或class)node
{DataType data;
struce node *next;
}Node;

fence->next就是取节点fence的数据项*next,就是该节点的后继指针。fence=fence->next是给指针赋新值,指向原来结点的后继。

晕死,这是结构变量才有的,结构里有结构体本身类型的指针

eg.

struct Student
{
int a;
struct * next;
}STUDENT, *PSTUDENT;

PSTUDENT *p = (STUDENT)(malloc(STUDENT));//p 指向该结构变量
PSTUDENT *p1 = (STUDENT)(malloc(STUDENT));//p1 指向该结构变量

p->next = p1;//把p1放到p后面,形成链表,呵