# 在 C++ 编程中将数组传递给函数

> 原文： [https://www.programiz.com/cpp-programming/passing-arrays-function](https://www.programiz.com/cpp-programming/passing-arrays-function)

#### 在本文中，您将学习将数组传递给 C++ 中的函数。 您将学习如何传递一维和多维数组。

[数组](/cpp-programming/arrays "C++ arrays")可以作为参数传递给[函数](/cpp-programming/function "C++ functions")。 考虑以下示例，将一维数组传递给函数：

* * *

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

**C++ 程序，通过将一维数组传递给函数来显示 5 个学生的分数。**

```cpp
#include <iostream>
using namespace std;

void display(int marks[5]);

int main()
{
    int marks[5] = {88, 76, 90, 61, 69};
    display(marks);
    return 0;
}

void display(int m[5])
{
    cout << "Displaying marks: "<< endl;

    for (int i = 0; i < 5; ++i)
    {
        cout << "Student "<< i + 1 <<": "<< m[i] << endl;
    }
}
```

**输出**

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

将数组作为参数传递给函数时，仅将数组名称用作参数。

```cpp
display(marks);
```

还要注意将数组作为参数而不是变量传递时的区别。

```cpp
void display(int m[5]);
```

上面代码中的参数`marks`表示数组`marks[5]`的第一个元素的内存地址。

并且函数声明中的形式参数`int m[5]`转换为`int* m;`。 该指针指向由数组`marks`指向的相同地址。

这就是原因，尽管该功能是在用户定义的函数中以不同的数组名称`m[5]`进行操作的，但是原始数组`marks`仍在操作。

C++ 以这种方式处理将数组传递给函数以节省内存和时间。

* * *

## 将多维数组传递给函数

[多维数组](/cpp-programming/multidimensional-arrays "C++ Multidimensional Arrays")的传递方式与一维数组类似。 考虑以下示例，将二维数组传递给函数：

### 示例 2：将多维数组传递给函数

**C++ 程序，通过将二维数组的元素传递给函数来显示它。**

```cpp
#include <iostream>
using namespace std;

void display(int n[3][2]);

int main()
{
    int num[3][2] = {
        {3, 4},
        {9, 5},
        {7, 1}

    };
    display(num);

    return 0;
}

void display(int n[3][2])
{

    cout << "Displaying Values: " << endl;
    for(int i = 0;  i < 3; ++i)
    {
        for(int j = 0; j < 2; ++j)
        {
            cout << n[i][j] << " ";
        }
    }
} 
```

**输出**

```cpp
Displaying Values: 
3 4 9 5 7 1 
```

在上述程序中，多维数组`num`被传递给函数`display()`。

在`display()`函数内部，使用嵌套的`for`循环遍历数组`n(num)`。

该程序使用 2 [进行循环](/cpp-programming/for-loop "C++ for loop")，以遍历二维数组中的元素。 如果它是 3 维数组，则应将 3 用于循环。

最后，所有元素都被打印到屏幕上。

**注意**：维度大于 2 的多维数组可以以类似于二维数组的方式传递。