*(p++)与*(++p)的区别

c语言中*(p++)*(++p)有什么区别,望大神举例说明,越细越好

*(p++)是先执行,后指针p累加,指向下一个地址
*(++p)是先将pj加一后再指向结果所在的地址
例如int *p=1,s1,s2;
*(p+1)=2;
s1=*(p++);
s2=*p;
printf("%d,%d",s1,s2);

//////////////////////

int *p=1,s1,s2;
*(p+1)=2;
s1=*(++p);
s2=*p;
printf("%d,%d",s1,s2);
第一个的结果为1,2
第二个的结果为2,2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-16
#include <stdio.h>
void main()
{
int *p;//P是一个整型指针
printf("%d\n",p);//以10进制整数的形式输出指针P的值
printf("%d\n",&p);//以10进制整数的形式输出指针P的地址
}

P是指针
&P是指针P的地址
*P是指针P的内容,也就是P所指向的那个地址

注意,内存中的地址都是16进制的,可以转化为10进制,不过不是很推荐这么做。
第2个回答  2008-09-18
p++->n先取得P当前指向的结构体的N,再将P指向下一个元素
++p->n再取得P当前指向的结构体的N,再将这个值+1

所以++p->n的值是6
第3个回答  2013-05-02
前者是执行完当前行之后,指针p累加
后者是先将指针p累加,然后在执行当前行

任何一本C语言的书应当都会有++/--前置后置的相关说明以及示例的。
第4个回答  2011-02-16
你好。
在你写的这段程序中,逐行来看。
int *p; //定义了一个整形的指针变量,*p,这里的*在定义的时候使用,是为了说明这是一个指针变量。
printf("%d\n",p); //输出指针变量p所指向的那个变量的值。
printf("%d\n",&p); //输出指针变量p所指向的那个变量的地址。

这里只是简单一说,如果你想进一步弄明白,建议去看C语言指针部分的相关内容。
相似回答