原文: https://www.programiz.com/cpp-programming/passing-arrays-function

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

数组可以作为参数传递给函数。 考虑以下示例,将一维数组传递给函数:


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

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

  1. #include <iostream>
  2. using namespace std;
  3. void display(int marks[5]);
  4. int main()
  5. {
  6. int marks[5] = {88, 76, 90, 61, 69};
  7. display(marks);
  8. return 0;
  9. }
  10. void display(int m[5])
  11. {
  12. cout << "Displaying marks: "<< endl;
  13. for (int i = 0; i < 5; ++i)
  14. {
  15. cout << "Student "<< i + 1 <<": "<< m[i] << endl;
  16. }
  17. }

输出

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

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

  1. display(marks);

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

  1. void display(int m[5]);

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

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

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

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


将多维数组传递给函数

多维数组的传递方式与一维数组类似。 考虑以下示例,将二维数组传递给函数:

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

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

  1. #include <iostream>
  2. using namespace std;
  3. void display(int n[3][2]);
  4. int main()
  5. {
  6. int num[3][2] = {
  7. {3, 4},
  8. {9, 5},
  9. {7, 1}
  10. };
  11. display(num);
  12. return 0;
  13. }
  14. void display(int n[3][2])
  15. {
  16. cout << "Displaying Values: " << endl;
  17. for(int i = 0; i < 3; ++i)
  18. {
  19. for(int j = 0; j < 2; ++j)
  20. {
  21. cout << n[i][j] << " ";
  22. }
  23. }
  24. }

输出

  1. Displaying Values:
  2. 3 4 9 5 7 1

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

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

该程序使用 2 进行循环,以遍历二维数组中的元素。 如果它是 3 维数组,则应将 3 用于循环。

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

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