C语言使用int类型函数返回数组最大值报错及不输出问题求助
错误原因
- 核心错误出现在
main函数末尾的printf(largestNum)语句:largestNum是函数名,本身代表函数的内存地址,属于函数指针类型,不是函数执行后的返回值。你之前调用的largestNum(&count, numbersArr)没有保存返回结果,相当于计算出最大值后直接丢弃了。printf的第一个参数要求传入格式控制字符串,输出int类型的值必须搭配%d占位符,直接传入函数指针会触发类型不匹配报错,你看到的指针类型冲突提示就是由此导致的。
修复方法
将main函数末尾的两句代码:
largestNum(&count, numbersArr); printf(largestNum);
替换为以下任意一种写法即可:
写法1(先存储返回值再输出,可读性更高):
int max = largestNum(&count, numbersArr); printf("%d", max);
写法2(直接在printf中调用函数):
printf("%d", largestNum(&count, numbersArr));
修复后完整可运行代码
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++; } int max = largestNum(&count, numbersArr); printf("%d", max); return 0; }
内容的提问来源于stack exchange,提问作者SimTim124
相关产品推荐
相关产品推荐

