繁体   English   中英

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

[英]Why is the program giving a wrong answer, when I am trying to find maximum of an array using call by reference?

我想写一个 function,它给了我一个数组的最大值,它应该是通过引用调用。 这是我的代码:

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,6,1};
        int len = 8;
        int max = 0;
        max_array(array, len, &max);
        printf("Max of Array: %d \n", max);

        return 0;
}

就像你看到有什么不对劲。 我的 Output 就像 158879987 这样的地址。

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

在 function 中,您错误地指定了第一个参数。 Arrays 总是通过引用传递,你不需要 * 和 [],选择一个。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM