有没有人告诉我下,这种错误是怎么产生了,我实在看不出来问题在哪啊,我问GPT,他也找不到真正原因在哪
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;
}
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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
编译时报错,num重复定义了:
[root@ansible9 ~]# gcc main.c
In file included from main.c:3:
b.h:1:5: error: redefinition of ‘num’
int num=10;
^~~
In file included from a.h:1,
from main.c:2:
b.h:1:5: note: previous definition of ‘num’ was here
int num=10;
^~~