*p++、*(p++)、(*p)++、*++p、++*p的区别

这几天做题就一直搞不懂*和自增自减先后顺序,做题老是翻车,所以研究一下,大佬请轻喷。。。

int n=第一步第二步结合性以及综合的取值
*p++*pp++先取p所指向的变量值,然后p存放的地址++,相当于n=*p,p++;
*(p++)p++*p效果等同于*p++
(*p)++*p(*p)+=1先取p所指向的变量值,然后p所指的变量++,相当于n=p,(p)++
*++p++p*(++p)先p存放的地址++,然后取p++后所指向的变量值,相当于n=*(p+1)
++*p*p(*p)+=1先取p所指向的变量值,然后p所指的变量++,相当于(p)++;n=p

注意:(p)++,++p,不适用于字符串常量,同样的p++,(p++),*++p也不适用于字符数组!

就这么多吧,好累~

一言预留位

添加新评论

仅有一条评论

  1. 梁

    我认为你的第一个写错了。*p++第一步是先p++,第二步再取内容

    *和++是运算级别是同一级而且是从右向左。所以我认为你的第一个写错了。