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

C语言中相加数组出现编译错误,求问题原因与解决办法

问题分析与修复方案

错误原因拆解

  • 函数参数类型不匹配:你将函数funcion1的参数声明为int arreglo1和int arreglo2,但传入的是数组。在C语言中,数组作为函数参数传递时会退化为指针,正确的参数类型应该是int arreglo1[]或者int *arreglo1。用int类型接收数组,会导致arreglo1[i]这种下标访问操作报错——因为int不是指针/数组类型,无法通过下标取值。
  • 数组初始化非法:int arreglo3[]={};是不符合C标准的写法,编译器无法推断数组大小,必须显式指定大小(比如int arreglo3[5];),或者在初始化时提供足够的元素来确定大小。
  • 函数返回值缺失:函数声明为int funcion1(...),但函数体内没有return语句,会触发未定义行为,需要补充返回值(比如return 0;)。

修复后的代码

#include <stdio.h>
// 修改参数类型为数组/指针
int funcion1(int arreglo1[], int arreglo2[]);
int main()
{
    int arreglo1[5]={3,5,1,4,-2};
    int arreglo2[5]={8,7,2,5,1};
    funcion1(arreglo1, arreglo2);    
    return 0;
}
// 对应修改参数类型
int funcion1(int arreglo1[], int arreglo2[]){
    // 显式指定arreglo3的大小为5
    int arreglo3[5];
    int n=5;
    int i;
    for (i = 0; i < 5; i++)
    {
        arreglo3[i] = arreglo1[i] + arreglo2[n-1];
    }
    for (i = 0; i < 5; i++)
    {
        printf("%d ", arreglo3[i]); // 加空格让输出更清晰
    }
    // 补充返回值
    return 0;
}

额外说明

当你用int arreglo[]作为函数参数时,编译器会自动将其视为int *arreglo,两种写法效果一致。如果不确定数组大小,可以额外传入一个表示长度的参数,让函数更通用。

内容的提问来源于stack exchange,提问作者Diego Albarracin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:31:52