问题
单项选择题
下列程序的运行结果是( )。
#include <stdio.h>
void fun(int *a, int *b)
int *k;
k=a; a=b; b=k;
main()
int a=3,b=6, *x=&a, *y=&b;
fun(x,y);
printf("%d%d",a,b);
A) 6 3
B) 3 6
C) 编译出错
D) 0 0
答案
参考答案:B
解析: 程序看上去是要实现交换两个指针的值,但是C语言中实参变量和形参变量之间的数据传递是单向的“值传递”,指针变量做函数参数也要遵循这一规则。调用函数不能企图通过改变形参指针的值而使实参指针的值也改变。所以本题的输出结果是36。