*++p 和 ++*p 有什么区别?
最近有同学在刷笔试题的时候,遇到这么一个问题。
#include先是一个数组,然后有个指针,赋值是 a + 2,所以 p 指向了元素20。int main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); return 0; }
p = p + 1; printf("%d ", *p);++*p 也是前置的++,只不过这次加的对象是*p,所以这个地方*p加不加括号结果都一样。
++*p; ++(*p);p指向30,对30加一就变成了31。
root@Turbo:test# ./test 30 31 root@Turbo:test#自己写代码的时候,不建议写这样的代码,过于复杂,给别人理解造成困难,有时候换个编译器,可能结果也不一样。
#includeint main() { int array[5] = {0, 10, 20, 30, 40}; int *p = array + 2; printf("%d ", *++p); printf("%d ", ++*p); printf("%d ", *p++); return 0; }
全部0条评论
快来发表一下你的评论吧 !