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

admin2018-01-14  30

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

答案D

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

最新回复(0)