为什么选择B选项啊?

img

函数中是对指针进行的操作,那么就意味着fun()函数传进去的是值(地址的值),因为fun函数中是对这个地址值进行的操作。所以操作对main函数中的变量没有影响。 如果函数fun改成如下形式就会对main函数中的变量产生影响:

void fun(int* a,int *b)
{
    int t;  //这里t是一个int类型,而题目中是一个int*
    t = *a; //这里是t=*a,是a地址的值
    *a = *b;//这里是将b地址内的值给a
    *b = t;
}

fun(&x,&y)传进去的是x,y的地址,在fun函数里面,并没有对x,y地址对应的值即*a,*b进行交换,fun函数的最后一句,表面上是交换了x,y的地址,但是实际上只是在fun里面起作用,参数传递是值传递(地址的值)