📅  最后修改于: 2023-12-03 15:23:47.778000             🧑  作者: Mango
在 C++ 中,函数可以返回数组类型,但是如果要返回二维数组类型,需要注意一些细节。
在 C++ 中,我们可以使用指针作为数组的代表,因此可以使用指针来返回二维数组。具体步骤如下:
声明函数时,将函数返回类型设置为指向指针的指针类型,即 int**
。
int** getArray(int row, int col);
在函数内部申请一个二维数组的指针,并初始化数组元素。
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;
}
在调用函数时,使用二级指针来接收返回值,并在使用后需要手动释放内存。
int** arr = getArray(2, 3);
//使用 arr ...
for(int i=0; i<2; i++){
delete[] arr[i];
}
delete[] arr;
另外一种方法是将二维数组转换为一维数组来返回。具体步骤如下:
声明函数时依然将函数返回类型设置为数组指针类型,即 int (*)[col]
。
int (*getArray(int row, int col))[col];
在函数内部声明一个指向一维数组的指针,并申请一维数组的空间。
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;
}
在调用函数时,直接使用数组变量来接收返回值,并在使用后需要手动释放内存。
int (*arr)[3] = getArray(2, 3);
//使用 arr ...
delete[] arr;
以上就是从 C++ 函数返回二维数组的两种方法,需要注意的是,在使用完毕后,需要手动释放内存,以免内存泄漏。