请教C语言中(*p)++与*p++与++*p与*++p的区别

来源:百度知道 编辑:UC知道 时间:2024/05/05 23:51:04
如题,一直都不太明白,做题经常做错,还请各位高手帮帮忙!最好能举例说明,万分感谢!

首先,明确:++的优先级高于*的优先级。
(*p)++
//首先取p所指向的值,给它所指向的值做后缀加,由于是后缀加,所以返回原来表达式的值,即该表达式最后的值为p所指向的值
*p++
//它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值
++*p
//即相当于++(*p),先取p所指向的值,然后施以前缀加,则该表达式的值为p当前所指对象的值+1的结果。
*++p
//相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针。然后*取下移指针后所指向的值