转自https://blog.csdn.net/weixin_41413441/article/details/80849827
*p++与*(p++)
#include<iostream>
using namespace std;
int main()
{
//测试*p++
int a[5] = {1,100,200,300};
int *p=a;
*p++= 10;
cout << "*p: " << *p << endl;;
cout<<"a[0]:"<<a[0]<<endl;
cout <<"a[1]:" << a[1] << endl;
cout<< endl;
//测试*(p++)
int b[5] = {1,100,200,300 };
int *q = b;
*(q++) = 10;
cout << "*q: " << *q << endl;;
cout << "b[0]:" << b[0] << endl;
cout << "b[1]:" << b[1] << endl;
system("pause");
return 0;
}
*p++ 与*(p++)没有区别原因:后++优先级高于*
*p++与(*p)++
#include<iostream>
using namespace std;
int main()
{
//测试(*p)++
int a[5] = {1,100,200,300};
int *p=a;
(*p)++;
cout << "*p: " << *p << endl;;
cout<<"a[0]:"<<a[0]<<endl;
cout <<"a[1]:" << a[1] << endl;
cout<< endl;
//测试*p++
int b[5] = {1,100,200,300 };
int *q = b;
*q++;
cout << "*q: " << *q << endl;;
cout << "b[0]:" << b[0] << endl;
cout << "b[1]:" << b[1] << endl;
system("pause");
return 0;
}
(*p)++,先取*p,再使*p这个值加1,p指针并没有移动
(*p)++=2此式子是错误的,因为(*p)++其实是个右值,而*p++和*(p++)是左值。所以*p++=2和*(p++)才不会出错