若有以下程序 #include <stdio.h> int *f(int *s,int *t) { int *k; if (*s < *t){ k = s; s=t; t=k; }

admin2019-06-27  2

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

答案B

解析 在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/XaID777K
0

最新回复(0)