C++一个很头疼的事情就是只能返回一个值,想要返回多个值只能将这些值存在数组中,返回一个数组。
下面实现一个简单的返回二维数组的函数:
#include <iostream> using namespace std; int **func(int row,int col) { //初始化一个row*col的二维数组 int **data = 0; data = (int**)new int*[row]; //建立row个一位数组 for (int i = 0; i < row; i++) { *(data + i) = new int[col]; //每个一维数组的长度都是col } for (int i = 0; i < row; i++) for (int j = 0; j < col; j++) data[i][j] = i + j; //随便定义元素 return data; } int main() { int row = 5; int col = 8; int **data = func(row, col); for (int i = 0; i < row; i++) for (int j = 0; j < col; j++) { if (j < col - 1) cout << data[i][j] << "\t"; else cout << data[i][j] << endl; } return 0; }
输出:
0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 2 3 4 5 6 7 8 9 3 4 5 6 7 8 9 10 4 5 6 7 8 9 10 11
其实这样用指针并不好,容易出现空指针、越界等问题。