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

问题描述

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

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变量中的值。