*p++、 *(p++)、 (*p)++

转自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++)才不会出错 

猜你喜欢

转载自blog.csdn.net/YfBong/article/details/88706513
今日推荐