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

在C++中实现接收两个数组参数并逐元素求和的函数

嘿,我看你已经搞定Java版本的数组对应元素相加功能了,现在想把它搬到C里对吧?其实核心思路和Java完全一致,只是C在数组的处理上有一些细节差异,我来给你捋清楚几种靠谱的实现方式~

最推荐的方式:使用std::vector

C++里的std::vector就类似Java里的ArrayList,它会自动帮你管理内存,不用手动分配释放,安全性拉满。而且用它实现这个功能和Java的逻辑几乎一模一样,还能加个长度检查避免越界错误:

#include <vector>
#include <stdexcept> // 用于抛出异常

std::vector<int> sumEqualLengthArrays(const std::vector<int>& firstArray, const std::vector<int>& secondArray) {
    // 先校验两个数组长度是否一致,防止越界访问
    if (firstArray.size() != secondArray.size()) {
        throw std::invalid_argument("两个数组必须长度相等!");
    }

    std::vector<int> result(firstArray.size());
    for (size_t i = 0; i < firstArray.size(); ++i) {
        result[i] = firstArray[i] + secondArray[i];
    }

    return result;
}

为啥推荐这个版本?

  • 用const引用传递参数,避免不必要的数组拷贝,效率更高
  • vector自动处理内存,不用像原生数组那样担心内存泄漏或者越界
  • 加入了长度校验,比Java版本更严谨,能提前发现错误

如果一定要用原生数组的话

C++里原生数组不能直接作为函数返回值(本质上会退化成指针),所以有两种实现方式:

方式1:让调用方提供结果数组

这种方式需要调用者提前分配好存储结果的数组,函数负责填充内容:

#include <cstddef> // 用于size_t类型

void sumEqualLengthArrays(const int* firstArray, const int* secondArray, int* resultArray, size_t arrayLength) {
    for (size_t i = 0; i < arrayLength; ++i) {
        resultArray[i] = firstArray[i] + secondArray[i];
    }
}

调用示例:

int a[] = {1, 2, 3, 4, 5};
int b[] = {6, 7, 8, 9, 10};
int result[5];
sumEqualLengthArrays(a, b, result, 5);

方式2:动态分配数组返回指针

这种方式函数内部动态分配内存,返回指针,但一定要记得调用完后用delete[]释放内存,不然会造成内存泄漏:

#include <cstddef>

int* sumEqualLengthArrays(const int* firstArray, const int* secondArray, size_t arrayLength) {
    int* resultArray = new int[arrayLength];
    for (size_t i = 0; i < arrayLength; ++i) {
        resultArray[i] = firstArray[i] + secondArray[i];
    }
    return resultArray;
}

调用示例:

int* res = sumEqualLengthArrays(a, b, 5);
// 使用res做一些操作
delete[] res; // 必须释放内存!

总的来说,除非你有特殊需求必须用原生数组,否则优先选std::vector的版本,它在代码可读性和安全性上都更优~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:15:57