问题
单项选择题
有以下程序
#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
解析:
[评析] 本题主要考查的是函数的实参和形参之间的传递关系,C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。调用函数不可能改变实参指针变量的值。所以x和y的地址并没有改变,即p和q也没有改变,因此,选项B是正确的。