C语言中p=p->next;语句是什么意思?一般作用是什么?

如题所述

p=p->next是表示修改指针p的位置,把p指向原来的下一个节点。

作用是:

p1-p2-p3-....... p1->next=p1,那么链表就断了,p2,p3会找不到了,链表变成了 p1--| |-----|。->[0000]->[1111]->[2222]->[3333]->........ | p 开始时p指向节点[0000],那么p->next指向的是节点[1111] 如果执行语句 p->next=p,实际上就是修改了指针p->next的位置,p没有变。

链表变成了: ......->[0000]->| |_____| p ,其它节点还在,但是不能遍历了,因为p->next 还是它自己本身,所以其它节点就找不到了,如果执行p=p->next,这样是修改了p位置,链表变成如下: ......->[0000]->[1111]->[2222]->[3333]->........ | p。

扩展资料

C语言特点

1、C语言是一种结构化的语言,提供的控制语句具有结构化特征。

2、c语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。

3、C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。

参考资料来源:百度百科—c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-12

意思:使当前指针指向链表的下一个结点。

一般作用在数据结构中的单链表里由应用,语句中的p一般指向一个结构体类型的数据,此类型的数据通常表示节点;结构体里存放的一些数据和记录下一个节点地址的指针变量next;这个next就好比链条一样,连接着一个个节点。

->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么要用指针取出结构体中的数据,就要用到“->”.

扩展资料:

举个例子:

struct Data

{

int a,b,c;

}; /*定义结构体*/

struct Data * p;/*定义结构体指针*/

struct Data A = {1,2,3};/*声明变量A*/

int x;/*声明一个变量x*/

p = &A ; /*让p指向A*/

x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/

/*由于此时p指向A,因而 p->a == A.a,也就是1*/

对于一开始的问题p=p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:

struct Data 

{

int a;

struct Data * next;

};/*定义结构体*/

main()

{

struct Data * p;/*声明指针变量p*/

p = p->next;/*将next中的值赋给p*/

}

本回答被网友采纳
第2个回答  推荐于2018-02-28
是指针之间的一种传递,一般在数据结构中的单链表里由应用,这条语句中的p一般指向一个结构体类型的数据,这种类型的数据通常表示节点;结构体里存放的是一些数据和记录下一个节点地址的指针变量next;这个next就好比链条一样,连接着一个个节点;在单链表里,数据是零散的,不像数组那样的顺序存储方式,每一个数据都有自己特定的位置,可以访问任何位置;单链表呢是通过一个记一个的方式把所有数据连起来的,当我们访问一条单链表的时候,必需从头节点开始,然而我们也只需要知道头结点的地址就好了;
比如这条语句p=p->next; 假设p在这条语句之前是指向结构体类型a1的,而a1中的next存的是a2的地址,那么这条语句执行以后,p就指向了a2;本回答被网友采纳
第3个回答  2012-08-07
p=p->next意思就是,使当前指针指向链表的下一个结点。

一般用来遍历链表。或者查找指定的结点。
第4个回答  2012-08-07
这是链表的知识
就是让p指向p的下一个地址本回答被提问者采纳