C语言代码运行时报警告求助:getArray函数返回值类型不匹配
问题排查与解决
警告根源
你的getArray函数声明返回类型是int,但最后return arr;里的arr是数组名——在C语言里数组名会自动转换成指向数组首元素的指针(类型为int*),把指针直接当作整数返回,就触发了「指针转整数未做类型转换」的警告。而且这个返回完全没必要:你是直接修改传入的数组(数组传参本质是传指针,修改的是原数组内容),根本不需要返回数组。
修复步骤
- 修正
getArray的返回类型:把getArray的返回类型改成void,删掉return arr;这一行,因为它不需要返回任何值。 - 补全函数声明:在
main函数之前声明getArray和displayArray,避免C语言隐式声明函数带来的潜在问题。 - 修正
main函数标准写法:C标准规定main函数返回类型为int,改成int main()并在末尾加上return 0;。 - 清理无用参数:
getArray和displayArray里的i是函数内部重新赋值的,没必要作为参数传入,改成函数内部的局部变量即可。
修复后的完整代码
#include <stdio.h> // 函数声明 void getArray(int arr[10]); void displayArray(int arr[10]); int main() { int arr[10]; getArray(arr); displayArray(arr); return 0; } void getArray(int arr[10]) { int i; // 局部变量i printf("Enter 5 numbers: \n"); for (i=0; i<5; i++) { scanf("%d",&arr[i]); } } void displayArray(int arr[10]) { int i; // 局部变量i for (i=0; i<5; i++) { printf("%d ",arr[i]); } }
额外说明
数组传参时,int arr[10]本质上等价于int* arr,所以你在函数里修改数组元素,会直接影响main里的原数组,不需要返回数组;把i改成函数内部的局部变量,能让代码逻辑更清晰,避免无用传参。
内容的提问来源于stack exchange,提问作者sanjay m s
相关产品推荐
相关产品推荐

