📜  如何从函数 c++ 返回二维数组(1)

📅  最后修改于: 2023-12-03 15:23:47.778000             🧑  作者: Mango

如何从 C++ 函数返回二维数组

在 C++ 中,函数可以返回数组类型,但是如果要返回二维数组类型,需要注意一些细节。

返回二维数组的方法
方法一:使用指针

在 C++ 中,我们可以使用指针作为数组的代表,因此可以使用指针来返回二维数组。具体步骤如下:

  1. 声明函数时,将函数返回类型设置为指向指针的指针类型,即 int**

    int** getArray(int row, int col);
    
  2. 在函数内部申请一个二维数组的指针,并初始化数组元素。

    int** getArray(int row, int col){
        int** arr = new int*[row];
        for(int i=0; i<row; i++){
            arr[i] = new int[col];
            for(int j=0; j<col; j++){
                arr[i][j] = i * col + j;
            }
        }
        return arr;
    }
    
  3. 在调用函数时,使用二级指针来接收返回值,并在使用后需要手动释放内存。

    int** arr = getArray(2, 3);
    //使用 arr ...
    for(int i=0; i<2; i++){
        delete[] arr[i];
    }
    delete[] arr;
    
方法二:将二维数组转换为一维数组

另外一种方法是将二维数组转换为一维数组来返回。具体步骤如下:

  1. 声明函数时依然将函数返回类型设置为数组指针类型,即 int (*)[col]

    int (*getArray(int row, int col))[col];
    
  2. 在函数内部声明一个指向一维数组的指针,并申请一维数组的空间。

    int (*getArray(int row, int col))[col]{
        int (*arr)[col] = new int[row][col];
        for(int i=0; i<row; i++){
            for(int j=0; j<col; j++){
                arr[i][j] = i * col + j;
            }
        }
        return arr;
    }
    
  3. 在调用函数时,直接使用数组变量来接收返回值,并在使用后需要手动释放内存。

    int (*arr)[3] = getArray(2, 3);
    //使用 arr ...
    delete[] arr;
    
总结

以上就是从 C++ 函数返回二维数组的两种方法,需要注意的是,在使用完毕后,需要手动释放内存,以免内存泄漏。