*p++、(*p)++、*++p、++*p有什么不同(从大一写的QQ空间迁移过来)
int a[5]={1,2,3,4,5};
int *p = a;
cout << (*p)++; // 1
cout <<((*p)++) //2
++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
cout <<++*p; // 2
cout <<(++*p) //2
执行后a[5] = {2,2,3,4,5}
*++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值
cout << *++p; // 2
cout <<(*++p) //2
============================
int *p = a;
*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;
cout << *p++; // 结果为 1cout <<(*p++); // 1
执行后a[5] = {1,2,3,4,5}
============================
//下面两种情况相同
(*p)++ 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)cout << (*p)++; // 1
cout <<((*p)++) //2
执行后a[5] = {2,2,3,4,5}
============================
++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)
cout <<++*p; // 2
cout <<(++*p) //2
执行后a[5] = {2,2,3,4,5}
============================
*++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值
cout << *++p; // 2
cout <<(*++p) //2
============================
注意:上面的每条cout输出,要单独输出才能得到后面的结果。
========================================Talk is cheap, show me the code=======================================
CSDN博客地址:https://blog.csdn.net/qq_34115899