有以下程序 #include 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,

admin2020-03-15  29

问题 有以下程序
#include
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,3,5
B、3,5,5,3
C、5,3,3,5
D、5,3,5,3

答案A

解析 函数的参数传递过程中,参数的传递是单向的,形参只是实参的一个副本,如果形参和实参为两个地址,形参指针指向的变化不能影响到实参指针的指向。所以该函数fun()调用结束后并不能改变指针变量p、q的指向,所以输出结果均为3、5,答案选A。
转载请注明原文地址:https://jikaoti.com/ti/ynG0FFFM
0

最新回复(0)