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

admin2016-12-28  21

问题 若有以下程序
    #include
    int*f(int*s,int*t)  {
    int k;
    if  (*s  <  *t)  {
    k=  *s;  *s=*t;  *t=k;  }
    return  s;  )
    main()  {
    int 1=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

答案C

解析 函数f为返回值为指针的函数,主要功能是返回s和t指向空间值大的数据的地址,同时如何s指向空间数据大于t指向空间的数据,那么交换。t函数p和q指向i和j,值为3和5,j的值大于i的值,因此调用函数f以后,返回j的地址,r指向j,同时i和j的值交换,i=5,j=3,p和q的指向不变,p指向i,q指向j。
转载请注明原文地址:https://kaotiyun.com/show/RrDp777K
0

最新回复(0)