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

C++数组元素批量乘值函数实现问题:段错误排查与修正

问题分析与修复

你的代码出现段错误且无法得到预期结果,核心问题有三个:

  • 数组索引越界:循环条件i <= 10会让程序访问myArray[10],但数组的有效索引范围是0到9(共10个元素),越界访问会触发内存错误(段错误)。
  • 函数返回值不匹配:声明的int类型函数没有返回值,属于未定义行为,可能导致程序异常。
  • 数组参数处理僵化:函数定义里的int myArray[10]在C++中会被视为指针,硬写的10无法适配不同大小的数组,应该把数组长度作为参数传入,保证通用性。

修正后的完整代码

#include <iostream>

using namespace std;

// 修正函数原型:返回值改为void(无需返回值),增加数组长度参数
void MultiplyArray(int[], int, int);

int main()
{
    const int SIZE = 10;
    int myArray[SIZE] = {5, 10, 15, 20, 25, 30, 35, 40, 45, 50};
    int multiplyMe = 5;

    // 调用时传入数组、乘数、数组长度
    MultiplyArray(myArray, multiplyMe, SIZE);

    // 打印数组
    for(int i=0; i < SIZE; i++)
    {
        cout << myArray[i] << " ";
    }
    cout << endl;

    return 0;

}

// 修正函数定义:返回值为void,接收数组长度参数,循环条件改为i < size
void MultiplyArray(int myArray[], int m, int size) {
  for (int i = 0; i < size; i++) {
    myArray[i] *= m;
  }
}

关键修正点说明

  1. 调整函数返回类型:函数仅修改数组元素,无需返回值,因此将int改为void,避免未定义行为。
  2. 传递数组长度参数:把SIZE作为参数传入函数,让函数能适配任意大小的数组,而非硬写固定长度。
  3. 修复循环条件:将i <= 10改为i < size,确保只访问数组的有效索引范围,彻底解决越界问题。

运行修正后的代码,即可得到预期输出:

25 50 75 100 125 150 175 200 225 250

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:05:21