问题 单项选择题

下列程序的运行结果是( )。 #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。

问答题 简答题
多项选择题