在本文中将详细说明如何将一维数组二维数组三维数组作为函数参数传递给函数进行处理。

C++中,一维数组可以理解为包含n个数字的内存块,例如int a[3]表示数组a为包含3个int类型数字的内存块;

二维数组可以理解以一维数组为元素的一维数组,例如2行3列的二维数组可以理解为两个元素的一维数组,其中每个元素为包含3个元素的一维数组;

三维数组可以理解为以二维数组为元素的一维数组,例如2个2行3列的三维数组可以理解为两个元素的一维数组,其中每个元素为2行3列的二维数组;

将数组作为函数参数传递,最好的方式就是传递数组指针,即指向数组首个元素内存的指针,再加上可以表示数组维度或者长度的已知参数。

1 将一维数组作为函数参数传递给函数

下列代码展示例如如何将一维数组作为函数参数传递给函数,其中传递了两个行参,第一个形参为一维数组的长度,最后一个形参为数组指针。

#include <iostream>

void Print_1D_Array(int array_length, int* array)
{
    for (int i = 0; i < array_length; ++i)
    {
        std::cout << array[i] << ",";
    }
    std::cout << std::endl;
}

int main()
{
    std::cout << "一维数组传递" << std::endl;
    int array_1D[3] = { 1,2,3 };
    Print_1D_Array(3, array_1D);
}

2 将二维数组作为函数参数传递给函数

下列代码展示例如如何将二维数组作为函数参数传递给函数,其中传递了三个行参,第一个形参为二维数组的行数,第二个形参为二维数组的列数,最后一个形参为数组指针。

#include <iostream>

void Print_2D_Array(int rows, int cols, int* array)
{
     for (int i = 0; i < rows; ++i)
     {
         for (int j = 0; j < cols; ++j)
         {
             std::cout << array[i * cols + j]<<",";
         }
         std::cout << std::endl;
    }
}

int main()
{
    std::cout << "二维数组传递" << std::endl;
    int array_2D [][3] = {
         {1, 2, 3},
         {4, 5, 6}
    };
    Print_2D_Array(2, 3, array_2D[0]);
}

3 将三维数组作为函数参数传递给函数

下列代码展示例如如何将三维数组作为函数参数传递给函数,其中传递了四个行参,第一个行参为三维数组的第三维度的数量,第二个形参为二维数组的行数,第三个形参为二维数组的列数,最后一个形参为数组指针。

#include <iostream>

void Print_3D_Array(int num,int rows, int cols, int* array)
{
    for (int i = 0; i < num; ++i)
    {
        for (int j = 0; j < rows; ++j)
        {
            for (int k = 0; k < cols; ++k)
            {
                std::cout << array[i * rows * cols + j * cols + k] << ",";
            }
            std::cout << std::endl;
        }
    }
}

int main()
{
    std::cout << "三维数组传递" << std::endl;
    int array_3D [][2][3] = {
         {
             {1, 2, 3},
             {4, 5, 6}
         },
         {
             {7, 8, 9},
             {10, 11, 12}
         }
    };
    Print_3D_Array(2, 2, 3, array_3D[0][0]);
}