首先了解fun函数的作用,fun的作用是交换地址,而不是交换值
其次int p = &x 表示p为&x,也就是p为x的地址,p表示x的值

接着第一次调用fun是传值调用,并
不会改变x,y对应的地址,fun改变的只是x,y副本的地址所以第一次输出35

接着是第二次fun函数调用,这次是指针传递,x,y的地址确实被改变,但是值得注意的是
虽然x,y的地址交换了但是指针指向不变,也就是所
p在x,y的地址交换后仍指向值为3的地址,q同理
所以第二次printf输出35
回答不易,有用请采纳下🤠