C语言 函数怎样通过数组来返回多个值

函数返回多个值

C语言中,函数默认的情况下只能返回一个值。那如果要返回多个值,那该怎么办呢?之前的章节中,介绍了使用结构体的方式来模拟地返回多个值 (实际上还是一个值),这一节,我们将介绍函数通过返回数组的方式来模拟返回多个值。

而在这之前,首先应当弄清楚,函数要如何返回数组。

函数返回数组

C语言中,数组通常可以用指针表示,即该指针指向的是数组第一个元素的内存地址,因此,函数要返回指针,可以通过将函数的返回值声明为指针类型即可(不过要将函数内的数组定义为静态static)。

函数通过数组返回多个值

如果有Python和机器学习的开发经验的话,可能会接触到矩阵的数据结构,所谓的矩阵,通常就是指多维的列表list(C语言中数组与之类似),比如下面这个简单的Python矩阵,其中【行】表示机器学习中大数据的样本ID,表示一个样本,列则表示每个样本的特征维度,比如商品的价格、品牌(可以使用独热编码)、容量等等。

python 复制代码
import numpy as np
# 创建一个3x3的矩阵
matrix = np.array([[1, 0, 3],
                   [4, 1, 6],
                   [7, 0, 9]])

同样的道理,我们也可以使用数组的方式来设计可以返回多个值的函数,比如固定两个元素的数组,第一个元素固定表示和,第二个元素则固定表示平均数,比如下面的这段代码:

cpp 复制代码
#include <stdio.h>
float *countArr(float arr[], int size){
    static float arrFeatures[2];
    float sum = 0.0f;
    for(int i = 0; i < size; i++){
        sum += arr[i];
    }
    float avg = sum / size;
    arrFeatures[0] = sum;
    arrFeatures[1] = avg;
    return arrFeatures;
}
int main() {
    float arr[5] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f};
    float *arrFeatures = countArr(arr, 5);
    printf("数组arr的和为: %.1f\n", arrFeatures[0]);
    printf("平均数为: %.2f\n", arrFeatures[1]);
    
    return 0;
}

代码编译运行,输出:

cpp 复制代码
数组arr的和为: 15.0
平均数为: 3.00

全栈开发助手原文:C语言 函数如何通过数组返回多个值

免责声明:内容仅供参考,不保证正确性,不作任何决策依据!

相关推荐
dialect_8 小时前
KMP算法
开发语言·c++·算法
总要学点什么8 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
开开心心_Every10 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c10 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
吴卫斌10 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
·present·10 小时前
CSAPP(Bomb lab)
c语言·c++
超级架构师11 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮12 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔13 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真13 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法