c语言中 *p++ 和 (*p)++ 和 *(p++) 和 *(++p) 和++(*p)和 *(p--)和 *(--p)有什么区别?

*p++是指下一个地址;

(*p)++是指将*p所指的数据的值加一;

/*******************************************************************解释***********************************************************************/

C编译器认为*和++是同优先级操作符,且都是从右至左结合的,所以*p++中的++只作用在p上,和*(p++)意思一样。

在(*p)++中,由于()的优先级比*和++都高,所以++作用在()内的表达式*p上.

/*******************************************************************解释***********************************************************************/

*(p++)是指是先取*p的值,再使p值+1;

*(++p)是指先对p+1,然后再取*p的值;

++(*p)是指地址p所指的数据+1;

*(p--)是指先取*p所对应的数据,然后使p-1;

*(--p)是指先使p-1,然后在进行*p运算。

扫描二维码关注公众号,回复: 2051483 查看本文章

/*************************************************************************解释*******************************************************************/

*(p--)  相当于     a [i--];

*(++p) 相当于     a [++i];

*(--p)   相当于     a [--i];

/*******************************************************************************解释*************************************************************/

例:

int x,y,z,l,m,n,q;

int  a[]={1,2,3,4,5};

int* p=a;

x=*p++;   //执行这一句后x=a[0]=1,p=a+1

y=(*p)++;  //执行这一句后,y=a[0]+1=2,p值仍然=a

z=*(p++);       //执行这一句话后,z=a[0]=1, p=a+1

l=*(++p);  //执行这一句后,l=a[1]=2,  p=a+1

m=++*(p)     //执行这一句后,m=++a[0]=2   p=a

n=*(p--)  //执行这一句后,n=*p-1=1-1=0 p=a

q=*(--p)  //执行这一句后,p=p-1=a-1,先让p自减,在进行*运算。q=a[-1]//此处理解即可,数组不存在a[-1]

猜你喜欢

转载自www.cnblogs.com/Jzeng666/p/9290418.html
今日推荐