在C++中,前缀++或- -运算优先级要比后缀的低,且在《C++运算符的优先级和结合性》表中与指针运算符*属于同组,即优先级和结合性相同。
int a[5]={1,2,3,45};
int *p=a;
1. *p++
根据结合性优先级法则,后缀++优先级高于*指针运算符,因此该表达式等价于*p(++),后缀++先使用值,然后将值自增1,则表达式可解释为int *pt,pt=p,p++,*pt; 于是
cout<<*p++; //输出结果为1
2. (*p)++
先对p解除引用,然后将指针p本身自增1,增量单位与p本身指代的内容类型一致,则
cout<<(*p)++ ; //输出结果为1
3. *++p
前缀++和*优先级相同,p只能和++运算符结合,于是该表达式等价为*(++p),先将p自增1,再解除引用,则
cout<<*++p; //输出结果为2
4. ++*p
先解除引用,后对*p的值自增1,于是
cout<<++*p; //输出结果为2==>++a[2]==>++1