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
其实这样用指针并不好,容易出现空指针、越界等问题。