微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我尝试使用按引用调用查找数组的最大值时,为什么程序给出错误的答案?

如何解决当我尝试使用按引用调用查找数组的最大值时,为什么程序给出错误的答案?

我想编写一个函数,该函数给了我最大的数组,并且应该通过引用进行调用。 这是我的代码

void max_array (int *array[],int len,int *max){
    for (int i = 0; i < len; ++i) {
        if (*max < &array[i]){
            *max = array[i];
        }
    }
}

int main() {
    void print_array (int array [],int len);
        int array[] = {5,3,2,6,4,1};
        int len = 8;
        int max = 0;
        max_array(array,len,&max);
        printf("Max of Array: %d \n",max);

        return 0;
}

就像您看到的一样,出了点问题。 我的输出就像158879987这样一个地址。

解决方法

您要在变量len中存储8,但是您的数组只有7个元素。

在函数中,您错误地指定了第一个参数。数组始终通过引用传递,您不需要*和[],选择一个。

void max_array (int *array,int len,int *max){
    for (int i = 0; i < len; ++i) {
        if (*max < array[i]){
            *max = array[i];
        }
    }
}

请记住要更改len变量中的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。