C语言数组中找最大值

有没有人告诉我下,这种错误是怎么产生了,我实在看不出来问题在哪啊,我问GPT,他也找不到真正原因在哪

img


int max(int arr[], int len) {
    int i;
    int max_value = arr[0];
    for (i = 1; i < len; i++) {
        if (arr[i] > max_value) {
            max_value = arr[i];
        }
    }
    return max_value;
}

int main() {
    int arr[] = { 12, 32, 44, 21, 78, 56, 90, 100, 65, 76, 99 };
    const int len = sizeof(arr) / sizeof(arr[0]);
    int max_value = max(arr, len);
    printf("The maximum value is %d\n", max_value);
    return 0;
}

img

const修饰len,相当于是常量,你那边的行参没有const,相当于扩大了len权限,应该是这样

我觉得是你main()函数中的第二句有问题,整个程序是没问题的,可以运行,你这个不能运行的原因可能是编译软件对指针要求严格

//感觉没什么问题啊,把const去了,参数改成指针形式
#include <stdio.h>
int max(int  *arr ,int len) {
    int i;
    int max_value = *arr;
    for (i = 1;i < len;i++) {
        if (*(arr+i) > max_value) {
            max_value = *(arr+i);
        }
    }
    return max_value;
}
int main() {
    int arr[] = {12, 32, 44, 21, 78, 56, 90, 100, 65, 76, 99 } ;
    int len = sizeof(arr) / sizeof(arr[0]);
    int max_value = max(arr, len);
    printf("The maximum value is %d\n", max_value);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^