取消引用指向整数的指针时获得不同的结果

Getting different results when dereferencing a pointer to an integer

本文关键字:结果 指针 引用 整数 取消      更新时间:2023-10-16
#include<stdlib.h>
#include<iostream>
using namespace std;
void fun(int* a){
int b=*a++;
cout<<b<<endl;
}
void fun1(int *a){
int b=*a+1;
cout<<b<<endl;
}
int main(){
int n=5;
fun(&n);//output remains 5
fun1(&n);//output incremented by 1
}

在函数 fun 中,n 的值在完成时不会递增,如上面的代码所示,另一方面在函数 fun1 中,n 的值递增 1.第一种方法递增 n 有什么问题?

您观察到的行为是运算符优先规则所期望的。

在第一种情况下,它是a++a取消引用之前的值。

在第二个中:a取消引用的值加 1。