#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
求各位能帮我解释下,谢谢了!
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,然后再*取值