版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nliki/article/details/89217802
我们先看下这段代码,想一想输出结果会是什么?
int main()
{
//递增/递减运算符和指针 Nliki
using namespace std;
int nliki[] = {23,32,33,36,38,56,58,66,88};
int *pt = nliki;
cout << "++*pt = " << ++*pt << endl;
cout << "*pt++ = " << *pt++ << endl;
cout << "*++pt = " << *++pt << endl;
return 0;
}
输出的结果是这样的:
++*pt = 24
*pt++ = 24
*++pt = 33
对于上面的“++*pt”、“*pt++”和“*++pt”一脸猛然,二两迷茫...
先说下递增/递减运算符和指针运算优先级:对于*和++/--同时用于指针,什么时候递增/递减,什么解除引用,这取决于运算符的位置和优先级。1.前缀递增/递减和解除引用运算符的优先级相同,以从右到左的方式进行结合;2.后缀递增/递减的优先级相同,但比前缀运算符的优先级高,以从左到右的方式进行结合。简而言之:++和*位于指针前,以从右到左的方式进行结合;++位于指针后,以从左到右的方式进行结合。