为什么我算出来的和答案不一样

img

需明白,abc三个变量都有地址,而在f函数中:
假设执行f(&a, &b);这句,进入函数中,开辟局部变量p指向a的地址,q指向b的地址,而在函数里的操作只改变了指针的指向,
即指针变量地址中的值,并没有修改abc三个变量地址的值,所以不论函数执行多少次都无法修改abc的值。

运行一下发现是5,2,6,没有交换,这里没有修改*p和*q里的值

img

*s,*p,*q都是指针,s=p,p=q这些都是在更换指针的指向,并没有更换指针指向的内容,而他们都是局部变量,他们做所的改变带不回去,结果就是什么都没有做。