问题 单项选择题

有以下程序:
void swap1(int * a,int * b)
int* c=a;
a=b,b=c;

void swap2(int * a,int * b)

int c=* a;
* a=*b,*b=c;

main()
int a=10,b=15;
swap 1(&a,&b) ;
printf("%d,%d,",a,b) ;
a=10,b=15;
swap 2(&a,&b) ;
printf("%d,%d",a,b) ;

其输出结果为 ______。

A.15,10,10,15

B.15,10,15,10

C.10,15,10,15

D.10,15,15,10

答案

参考答案:D

解析:[评析]C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题中swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,swap2()函数实现了交换两个变量a和b的值,因此执行第三个printf后输出交换后的值15,10,所以本题答案为D。

问答题
多项选择题