下面代码可以分析一下结果为什么是3,7,3吗?


#include <stdio.h>
int fun1(int *a,int *b,int *c)
{
    int *temp;
    temp=a;a=b;b=temp;
    *temp=*b;*b=*c;*c=*temp;
}
int main()
{
    int a=5,b=7,c=3;
    int *p1=&a,*p2=&b,*p3=&c;
    fun1(p1,p2,p3);
    printf("%d,%d,%d",a,b,c);
        
    return 0;
}








fun1函数中,a和b交换的时候是操作的指针,所以对外面的ab没有影响。
bc交换的时候,操作的是指针指向的值,会对外面的bc产生影响。但是,这时候b实际是a的地址,所以a指向的值被变成了3