【发布时间】:2021-12-11 05:30:36
【问题描述】:
我正在尝试创建一个小程序,它接收一个数组并从数组中返回最大的数。我能够使用带有初始化程序“void”的函数创建程序,但不明白为什么我不能使用“int”对不同的函数执行相同的操作。
在使用函数int largestNum(int *length,int numberArr[]) 时,我收到错误“不兼容的指针类型从结果类型为'int *'的函数返回'int *(int *, int *)'”。任何解释表示赞赏。
输入:
元素 0 - 23
元素 1 - 12
元素 2 - 34
输出: 34
使用 void 的函数:
void largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
printf("%d", largestNumber);
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
return 0;
}
使用 int 的函数:
int largestNum(int *length,int numberArr[]){
int largestNumber = numberArr[0];
for(int x = 1;x < *length;x++){
if (numberArr[x] > largestNumber)
largestNumber = numberArr[x];
}
return largestNumber;
}
int main(){
int numbersArr[100];
int input;
int num;
int count = 0;
printf("Input total number of elements (1-100): ");
scanf("%d", &num);
for(int x = 0; x < num; x++){
printf("Element %d - ", count);
scanf("%d", numbersArr + x);
count++;
}
largestNum(&count, numbersArr);
printf(largestNum);
return 0;
}
【问题讨论】:
-
没有理由将数组长度作为指针传递,只是传递值。 -
使用
-Wall -Wextra -Wpedantic -Werror并修复编译器抱怨的所有问题。
标签: arrays c printf return-value function-definition