请教C语言中(*p)++与*p++与++*p与*++p的区别
1个回答
展开全部
首先,明确:++的优先级高于*的优先级。
(*p)++
//首先取p所指向的值,给它所指向的值做后缀加,由于是后缀加,所以返回原来表达式的值,即该表达式最后的值为p所指向的值
*p++
//它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值
++*p
//即相当于++(*p),先取p所指向的值,然后施以前缀加,则该表达式的值为p当前所指对象的值+1的结果。
*++p
//相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针。然后*取下移指针后所指向的值
(*p)++
//首先取p所指向的值,给它所指向的值做后缀加,由于是后缀加,所以返回原来表达式的值,即该表达式最后的值为p所指向的值
*p++
//它相当于*(p++),首先指针p后移,由于对指针是后缀加,所以p++返回p没后移时的指针,如果是数组,那么表达式的值为指针当前所指元素(指针没有后移时)的值
++*p
//即相当于++(*p),先取p所指向的值,然后施以前缀加,则该表达式的值为p当前所指对象的值+1的结果。
*++p
//相当于*(++p),指针p先后移,如果是数组,则指向下一个元素,然后++p返回指针下移后的指针。然后*取下移指针后所指向的值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询