c语言中*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.
所以我觉得是:3,4,4
求各位能帮我解释下,谢谢了!

第1个回答  2019-03-07
*p++等价于*p (返回其值),p++;
*++p等价于++p,*p(返回其值);
(*p)++等价于*p,然后*p的值加1;

真的不知道某些人发很多别人看的很烦的东西是炫耀自己有很多学问吗?
第2个回答  2013-05-20
(*p)++:是使*p的值加1. 先取得的是*p的值.
第3个回答  2019-01-25
例如int
*p1,**p2;
两者本质上都是指针,但是两者的基类型不同
p1的基类型是int,换句话说p1指针指向的是int型的数据;而p2的基类型是int
*,换句话说p2指向的是指向int型数据的指针,即指向指针的指针
第4个回答  2018-04-12
y=(*q)++;//执行这一句后,y=a[0]=1,因为++在后,所以是先取值在++,故y=1,在这句话执行之后,a[0]++,此时a[0]=2,q仍然=a。

c语言中*p++和(*p)++有什么区别?
\/\/p是个指针,给p加1,相当于让p指向了x所在地址的下一个位置,而对于x则是没有任何影响 (*p)++:是使*p的值加1.\/\/*p则是p指向的位置对应的值,题目中是*q,所以此时的*q就是x的值,为3,当输出*q之后,再给*q即x自加1,所以x就变为4 ...

c语言中*p++和(*p)++有什么区别?
p++是指下一个地址。(*p)++是指将*p所指的数据的值加一。C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样;在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上。比如有:intx,y,a[]={1,2,3,4,5},...

*p++与(*p)++的区别
1、表示的含义不同 p表示p所指向的地址里面存放的是一个int类型的值 。p表示p所指向的地址里面存放的是一个指向int类型的指针。2、指向的内容不同 p=a指针p将指向a上的内容。p=a将变量a的地址 通过指针p 赋值到变量b上。3、存放的内容的地址不同 p指向的地址里面存放的是一个值 。p指向的地...

c语言 *(p++)和*p++含义一样不
肯定不一样的:(p++):是将先p所指向内存地址值A移动一个存储单元(如果p是int型就移动4个字节,char型就移动1个字节,……)得到另一个地址值B,再取移动后的地址值B所存放的数据;p++:是先取出p指向内存地址值A存放的数据,再把这个数据加一。

c语言中(*p)++和*p++含义应该不同吧?
(*p)++ : 表示指针p所指的存储空间的值自加一次。p++ : 由于++的优先级高于*,所以先执行++,相当于*(p++);例:如有定义:int a[5]={10,20,30,40,50};int *p=a,b;如写成:b=*p++; 则b的值为10,p自加一次由a[0]的地址指向a[1]的地址(就是值为20的变量地址),其它不...

*p++和(*p)++有什么区别呢?? 谢谢啊!!!
p++先取的*p得值,然后将指针加一位 (*p)++先取得*p的值,然后将这个值加1,不过是后缀++,所以后面的++事实上没用

请举例说下*p++和(*p)++的区别
回答:*p++表示*(p++),因为++运算符的优先级比*高,故p先与++结合,然后再与*结合,而由于后置++返回的是p原来的值,*p++的值为*p(p为原来的值),副作用为p+=1; (*p)++表示先取p所指向的内存空间中的值,然后将该值自增1.而p的值不变,即p还是指向那个内存空间。

C语言中定义int *p;那么*(p++)和*p++有区别吗?
没区别。因为* ++ 都是单目运算符,都是自右至左结合的。所以*p++是先p++ P指向的地址照类型大小加1, 再取*p值。 *(p++)就不说了,一样。

*p++和(*p)++的区别??
这两个是有区别的,p++先取p所指向的数据的值,然后再将直指p向后移动一位。而(*p)++,先取p所指向的数据的值, 然后在将其所指向的数据加1.下面的例子,可以帮你理解:include <stdio.h> int main(){ int *p, a[10] = {1,2,3,4,5,6,7,8,9,10};p = a;printf("%d ", *p...

*p++与*(p++)有什么区别吗
没有区别,这个问题涉及到运算符的优先级 其中++运算符的优先级高于*取值运算符,所以无论加不加括号都是一个效果 先地址自增1,然后再*取值

相似回答