有以下程序
#include <stdio.h>
void fun( int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
main()
{ int x=3, y=5, *p=&x, *q=&y;
fun(p,q); printf("%d,%d,",*p,*q);
fun(&x,&y); printf("%d,%d\n",*p,*q);
}
程序运行后输出的结果是 ______ 。
A. 3,5,5,3
B. 3,5,3,5
C. 5,3,3,5
D. 5,3,5,3
答案:B
解析:fun函数仅仅时改变了参数a和b的指向,并没有改变它们所指向变量的值。所以fun(&x, &y)中x、y不受影响。由于函数参数的传递原理是赋值,所以在fun(p,q)中,a、b的互换对p、q也没有影响。因此选B。