首页 > 试题广场 >

得到的返回值为

[单选题]
有如下的函数定义:
int Xfun(int *a, int n){
    int x=*a;
    for(int *pa=a+1; pa<a+n; pa++)
        if(*pa>x) x=*pa;
    return x;
}
int x[5]={23,46,78,55,16};
int res = Xfun(x,5);

则res的值为()

  • 55
  • 78
  • 23
  • 16
实际上是遍历数组后求出数组中元素的最大值。
发表于 2023-08-24 11:02:38 回复(0)
pa<a+n这里的理解就是pa可以指到a[5]的下一个 所以就是一个数组遍历完 代码if就是找最大值
发表于 2023-08-07 22:32:17 回复(0)
//我觉得Xfun程序应该是这样的吧,虽然能看懂原文中的IF函数想做一个最大数比较,但是指针是不是用错了,求大家指教
int Xfun(int *a,int n)
{
    int x=*a;
    for(int *pa=a+1; *pa<a+n; *pa++)
        if(**pa>x) x=**pa;
    return x;
}

发表于 2020-09-22 20:30:13 回复(4)
    int Xfun(int *a, int n){
    int t=*a;
    for(int *pa=a+1; pa<a+n; pa++)
        if(*pa>t) 
        t=*pa;
    return t;
    }
    int x[5]={23,46,78,55,16};
    int res = Xfun(x,5);
    printf("%d\n", res);

其实我觉得xfun内用字母x,跟数组名x重复了会有点绕。换个字母看的更清楚~
数组内最大数是78,所以最后打印的就是78
编辑于 2023-01-04 23:11:24 回复(0)
循环是地址a[0]+5个的地址 大于   pa当前的地址 
发表于 2022-11-08 20:40:21 回复(0)
兄弟们不会数组越界么
发表于 2022-10-01 15:55:31 回复(2)
取最大值
发表于 2021-03-01 14:43:11 回复(0)
这个程序实际上就是求数组中的最大的元素,类似于”冒泡法”
发表于 2020-08-15 18:34:58 回复(0)