后缀++操作符的优先级高于*操作符, 这两个操作符的结合性是从右向左的。
1、*cp++ 表达式的计算分3个步骤,(1)++操作符产生cp的一份拷贝;(2)++操作符将cp的值加1,使cp指向下一个内存位置;(3)最后,在cp的拷贝上执行间接访问操作。
所以该表达式返回的结果仍然是cp指向的内容,并让cp指向下一个内存位置。
2、(*cp)++ 表达式的计算:(1)加上括号,使它先执行间接访问操作; (2)++操作符先产生*cp的一份拷贝,然后++操作符将*cp加1;(3)最后,返回*cp的拷贝。
所以该表达式返回的结果是cp所指向内存位置原来的值。例子:
char ch = 'a';
char *cp = &ch;
cout << (*cp)++ << endl;
cout << *cp << endl;
结果:
a
b