You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:07:22