若有以下程序 #include int *f(int *s, int *t) { int k; if (*s < *t) { k = *s; *s=*t; *t=k; } return s; } main() { int i=3, j=5, *p=&i,

admin2020-07-28  16

问题 若有以下程序
#include
int *f(int *s, int *t)
{ int k;
if (*s < *t) { k = *s; *s=*t; *t=k; }
return s;
}
main()
{ int i=3, j=5, *p=&i, *q=&j, *r;
r=f(p,q);
printf("%d,%d,%d,%d,%d\n", i, j, *p, *q, *r);
}
则程序的输出结果是( )。

选项 A、5,3,5,3,5
B、3,5,5,3,5
C、3,5,3,5,5
D、5,3,3,5,5

答案A

解析 考查指针与函数。该函数进行的是地址传参,形参和实参指向的变量的值保持一致。函数f()中,如果(*s < *t)则将指针s、t中指向的变量的数据进行交换,s指向的地址中存放的是值较大的数据。函数调用结束后,p、q指向的值发生了改变,r和p的指向保持一致,所以答案选A。
转载请注明原文地址:https://kaotiyun.com/show/xI3p777K
0

最新回复(0)