*p++、*(p++)、(*p)++、*++p、++*p的区别
这几天做题就一直搞不懂*和自增自减先后顺序,做题老是翻车,所以研究一下,大佬请轻喷。。。
int n= | 第一步 | 第二步 | 结合性以及综合的取值 |
---|---|---|---|
*p++ | *p | p++ | 先取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也不适用于字符数组!
就这么多吧,好累~
我认为你的第一个写错了。*p++第一步是先p++,第二步再取内容
*和++是运算级别是同一级而且是从右向左。所以我认为你的第一个写错了。