C语言 *p++和*++p的区别
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int a[]={1,3};
int *p=&a[0];
cout<<"*p++="<<*p++<<endl;
p=&a[0];
cout<<"*++p="<<*++p<<endl;
p=&a[0];
cout<<"*(p++)="<<*(p++)<<endl;
cout<<"执行(p++)后,*p="<<*p<<endl;
p=&a[0];
cout<<"(*p)++="<<(*p)++<<endl;
cout<<"执行(*p)++后,*p="<<*p<<endl;
system("pause");
return 0;
}
*p++和*++p的区别:
*p++由于*和++优先级同级,满足右结合性,从右至左。先执行p++,因为此时语句还没执行完,p的值未被修改,所以*p++所取的值为a[0]=1,*p++等同于*(p++);
++与同*优先级同级,从右向左结合。*++p则等同于++p,*p。++p是先取p的值再加一,在本条语句未执行完的时候,p的值已经被改变了,再取指针p指向的内容,*++p结果是a[1]=3。
*(p++)和(*p)++的区别
*(p++)等同于*p++,结果是a[0]=1,(*p)++先取指针p指向的内容再将该内容加一,但在本条语句中(*p)++的结果与*(p++)打印结果相同。
结果:
作者:qianxiaohan
出处:https://www.cnblogs.com/qianxiaohan/p/15180153.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。