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

C语言传递int数组作为参数求和输出随机值问题如何解决

问题根源

  • C语言中数组作为函数参数传递时,会自动退化为指向数组首元素的指针,函数内部无法直接获取传入数组的实际长度。
  • 你定义的numList数组实际只有8个元素,但求和函数中循环条件写死了i < 10,会访问数组边界外的非法内存,属于未定义行为,因此每次运行都会读取到不确定的垃圾值,导致总和输出异常。

修复方案

推荐最常用的「数组长度作为额外参数传入」的方案,修复后代码如下:

#include <stdio.h>
// 新增第二个参数接收数组长度
int sumofArrayNum(int numList[], int len);

int main(){
    int result,numList[]={23,32,54,23,54,32,3,35};
    // 在数组未退化为指针的作用域内计算元素个数
    int len = sizeof(numList)/sizeof(numList[0]);
    result = sumofArrayNum(numList, len);
    printf("sum= %d", result);
    return 0;
}

int sumofArrayNum(int numList[], int len){
    int sum = 0;
    // 循环条件使用传入的实际长度
    for(int i = 0; i < len; ++i){
        sum += numList[i];
    }
    return sum;
}

修改后编译运行即可得到正确结果sum= 256。

内容的提问来源于stack exchange,提问作者Ismail Mansuri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:03