两者之间的区别如下:
1、表示的意义不同。
p是一个指针变量的名字,表示此指针变量指向的内存地址,而*p表示此指针指向的内存地址中存放的内容。
2、数量形式不同。
p如果使用%p来输出的话,它将是一个16进制数。*p一般是一个和指针类型一致的变量或者常量。
3、定义不同。
p存放的是地址,而*p是让程序去那个地址取出数据。
例子:
#include <stdio.h>
void main()
{
int x=3
int *p,*q
p=&x,q=&x
printf("%d\n",*p++)
printf("%d\n",(*q)++)
printf("%d\n",x)
}
输出结果为:3,3,4
解释:
*p++:是先取出*p的值,再使p加1
//p是个指针,给p加1,相当于让p指向了x所在地址的下一个位置,而对于x则是没有任何影响
(*p)++:是使*p的值加1.
//*p则是p指向的位置对应的值,题目中是*q,所以此时的*q就是x的值,为3,当输出*q之后,再给*q即x自加1,综上所述,x就会变为4
参考资料:
百度百科-p (C语言)
百度百科-C语言
1.选择系统和更新在设置界面中,点击系统和更新。2.点击语言和输入法在系统和更新界面中,点击语言和输入法。
3.选择语言和地区在语言和输入法界面中,点击语言和地区。
意思:使当前指针指向链表的下一个结点。
一般作用在数据结构中的单链表里由应用,语句中的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*/
}