这个为什么输出的是3而不是2呢?有人懂么

void f(int *p){
(*p)++;
}
int main(){
int b=2;
f(&b);
printf("%d",b);
}

实参&b传入的是b的地址
形参int *p是个指针,它指向了b的地址
那么你用(*p)++;改了b实际的值,之后不管在哪(函数里面或外面),b的值都已经变成3了,跟你返回不返回没有一毛钱关系

在main函数内调用了函数f 改变了函数内部变量b的值

因为每个变量都会有一个对应的储存地址,你可以想象在main函数中你先向地址中放入2,但是在调用方法f时参数是b也就是说你将b对应地址中的2替换成了3,所以此时b的值就对应3.