1、前缀递增、前缀递减和解除引用运算符的优先级相同,以从右到左的方式进行结合。
(1)*++pt:将++应用于pt(因为++位于*的右边),然后将*应用于被递增后的pt
(2)++*pt:先取得pt指向的值,然后将这个值加1
(3)(*pt)++:首先对真正解除引用,然后应用运算符++
2、后缀递增、后缀递减的优先级相同,比前缀运算符的优先级高,以从左到用的方式进行结合。
(1)*pt++:后缀运算符++的优先级更高,意味着将运算符应用于pt而不是*pt,因此对指针递增。然而后缀运算符意味着将对原来的地址进行解除引用而不是递增后的新地址,该语句执行完毕后,pt的值将更改为最新地址。
3、示例:
#include <iostream>
int main()
{
using namespace std;
double arr[5] = {21.1, 32.8, 23.4, 45.2, 37.4};
double *pt = arr;
double a = *pt;
cout << "*pt = " << a << endl;
double b = *++pt;
double c = ++*pt;
double d = (*pt)++;
double e = *pt++;
cout << "*++pt = " << b << endl;
cout << "++*pt = " << c << endl;
cout << "(*pt)++ = " << d << endl;
cout << "*pt++ = " << e << endl;
cout << "*pt = " << *pt << endl;
cin.get();
return 0;
}
结果:
注意:递增运算符在程序中会影响了*pt所代表的的位置,*pt最开始所代表的是arr[0]的位置,++pt修改了位置变为arr[1],pt++也修改了位置变为arr[2]