亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++数组传递给函数实战指南

C++中如何将数组传递给函数

本指南通过真实代码示例,讲解如何在C++中将一维和多维数组传递给函数。

在C++中,数组可作为函数参数传递,甚至可通过指针间接返回。理解数组退化为指针的机制及其对内存和性能的影响,对于编写高效代码至关重要。


数组作为函数参数的语法

接受数组的函数声明如下:

returnType functionName(dataType arrayName[arraySize]) { // function body }

示例:

int total(int marks[5]) { // implementation }

此处,marks为包含5个元素的int数组。调用函数时,仅传递数组名(指向首元素的指针)。


示例1:将一维数组传递给函数

#include <iostream> 
using namespace std; 
// 声明显示成绩的函数 
void display(int m[5]) { 
    cout << "Displaying marks:" << endl; 
    for (int i = 0; i < 5; ++i) { 
        cout << "Student " << i + 1 << ": " << m[i] << endl; 
    } 
} 
int main() { 
    int marks[5] = {88, 76, 90, 61, 69}; 
    display(marks); // 以数组名传递 
    return 0; 
}

输出

Displaying marks: 
Student 1: 88 
Student 2: 76 
Student 3: 90 
Student 4: 61 
Student 5: 69

关键点:

  1. 调用display(marks);传递marks[0]的地址。
  2. 函数内int m[5]被视为int* m;,指向同一内存。
  3. 修改m[i]会改变原始marks数组,体现传引用语义。

将多维数组传递给函数

对于二维数组,必须指定列数(第二维大小),以便编译器计算元素偏移。

示例2:将二维数组传递给函数

#include <iostream> 
using namespace std; 
void display(int n[][2]) { 
    cout << "Displaying values:" << endl; 
    for (int i = 0; i < 3; ++i) { 
        for (int j = 0; j < 2; ++j) { 
            cout << "num[" << i << "][" << j << "]: " << n[i][j] << endl; 
        } 
    } 
} 
int main() { 
    int num[3][2] = {{3, 4}, {9, 5}, {7, 1}}; 
    display(num); 
    return 0; 
}

输出

Displaying values: 
num[0][0]: 3 
num[0][1]: 4 
num[1][0]: 9 
num[1][1]: 5 
num[2][0]: 7 
num[2][1]: 1

注意:

高维数组遵循相同规则:除第一维外,所有维度大小必须指定。


从函数返回数组

函数不能直接返回整个数组。而是返回指向首元素的指针,可能指向静态分配数组、动态数组或临时对象。必须避免返回指向局部(栈上)数组的指针,否则会产生悬空引用。

示例(静态数组):

int* getArray() { 
    static int arr[5] = {1, 2, 3, 4, 5}; 
    return arr; // 返回首元素指针 
}

动态分配时,建议返回std::vector<T>以保证安全和自动内存管理。

生产代码中安全数组处理的进一步阅读建议参考C++权威资源。

C语言

  1. 掌握 C# 锯齿数组:声明、初始化与访问完全指南
  2. 掌握 C++ 运算符:六大类型全解析与实战示例
  3. 掌握 C++ 函数:从基础到进阶的完整实战指南
  4. C++ 友元函数与友元类:突破访问控制的利器
  5. C 语言运算符完全指南:算术、关系、逻辑、位运算等
  6. C++ 数组完全指南:声明、初始化、多维数组与指针技巧
  7. C++ 动态数组分配实战指南:new/delete、初始化、扩容与内存管理
  8. C++ 运算符重载实战指南:语法、方法、限制与代码示例
  9. C++ 函数详解:从声明到调用的实战指南
  10. C 语言编程入门:全面教程指南
  11. C++重载机制深度解析:函数重载与运算符重载全攻略
  12. C++多态实战指南:虚函数、动态绑定与纯虚函数