*p++、(*p)++、*++p、++*p有什么不同(从大一写的QQ空间迁移过来)

int a[5]={1,2,3,4,5};
int *p = a;

*p++ 先取指针p指向的值(数组第一个元素1),再将指针p自增1;

cout << *p++; // 结果为 1

cout <<(*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 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值
cout << *++p; // 2
cout <<(*++p) //2

============================
 

注意:上面的每条cout输出,要单独输出才能得到后面的结果。




========================================Talk is cheap, show me the code=======================================

CSDN博客地址:https://blog.csdn.net/qq_34115899
原文地址:https://www.cnblogs.com/lcy0515/p/9179844.html