C语言数据结构:p->next和p=p->next的区别?
发布网友
发布时间:2022-04-23 01:53
我来回答
共3个回答
热心网友
时间:2023-10-10 18:06
p 是一个指向某类型结构的指针;
p->next 是 p 所指向的结构的 next 成员;
p = p->next 是把 p->next 的值赋给 p。
如果这两句语句中的 p 变量是同一个 p 的话,那么 p->next 的数据类型一定是一个指向结构的指针,而且所指向的结构的类型与 p->next 所在结构的类型相同。
#include<stdio.h>
//链表的结构及其指针
struct stru_num
{
int num;
struct stru_num *next;//结构本身不能含有同类型的结构,但可以含有指向同类型的指针
} *p;
int main(void)
{
struct stru_num list[10];//链表
int index;
p = list;//初始化指针
for(index = 0;index < 10;index++) //赋值
{
p->next = p + 1;
p->num = index;
p = p->next;//与 p++ 效果等同
}
(p - 1)->next = NULL;//末元素指向空指针,
//输入除首元素的其他元素
p = list;
for(index = 0;index < 9;index++)
printf("%d",(p[index].next)->num);
return 0;
}
热心网友
时间:2023-10-10 18:07
这种写法经常用在链表中。
链表除了存放必要的数据以外,还要(必不可少的)有存放下一个数据的地址(就是指针),这样才能形成链表。同时我们也把这样一组由数据和地址组成的内容叫做一个“结点”。
通常让p作为一个指针,让它指向一个结点,就可以读/写结点的内容,p->next就是专门指向结点末尾那个存放地址的,我们知道这个地址是指向下一个结点的。
p=p->next,就让p指向了下一个结点的数据。
热心网友
时间:2023-10-10 18:07
p->next就是p结点的下一个结点的指针。
p=p->next就是让p指向p结点的下一个结点。
不懂追问。