为什么指针在 post 增量运算符操作时表现不同?
Why do pointers behave differently when operated by post increment oparator?
让我们看第一个代码:
以下代码显示n=10
的值:
#include<iostream>
int main()
{
int n=10;
int*p=&n;
*p++;
std::cout<<n;
return 0;
}
以下代码显示n=11
的值:
#include<iostream>
int main()
{
int n=10;
n++;
std::cout<<n
return 0;
}
运算符优先级。
第一种情况被解析为*(p++);
- 首先递增地址然后取消引用。这不会修改任何值。
第二种情况只是增加了值本身。
p++
递增指针。您需要 (*p)++
来递增该值。
让我们看第一个代码:
以下代码显示n=10
的值:
#include<iostream>
int main()
{
int n=10;
int*p=&n;
*p++;
std::cout<<n;
return 0;
}
以下代码显示n=11
的值:
#include<iostream>
int main()
{
int n=10;
n++;
std::cout<<n
return 0;
}
运算符优先级。
第一种情况被解析为*(p++);
- 首先递增地址然后取消引用。这不会修改任何值。
第二种情况只是增加了值本身。
p++
递增指针。您需要 (*p)++
来递增该值。