C++函数返回二维数组

  • Post author:
  • Post category:其他



一个函数返回二维数组的方法有两种:


第一种:

<span style="font-size:14px;">int (*f())[10]
{
	int (*p)[10] = new int[10][10];
	int start = 0;
	for (int i = 0; i < 10; i++)
		for (int j = 0; j < 10; j++)
			p[i][j] = start++;

	return p;
}</span>



首先解释一下函数的声明:


f():说明f是一个无参的函数;


(*f()):说明我们可以对调用


f的


结果进行解引用;



(*f())[10]:解引用的结果是一个数组,包含十个元素;



int (*f())[10]:元素的类型为int。


这就说明f的返回值是一个指向有十个元素的数组的指针。


二维数组本质上也是一个数组,只不过它的元素也是数组而已,所以可以用返回一个指向数组的指针来表示返回一个二维数组。




int (*p)[10] = new int[10][10];


用new操作符产生二维数组的方法。此处new的返回值类型是指向数组的指针,而不是int**。


以下是调用演示:


int main()
{
	int (*p)[10];
	p = f();

	for (int i = 0; i < 10; i++)
		for (int j = 0; j < 10; j++)
			cout << p[i][j] << endl;

	system("pause");
	return 0; 
}


第二种:


使用指向指针的指针,




int **f()
{
	int **p = new int*[10];
	int n = 0;
	for (int i = 0; i < 10; i++)
	{
		p[i] = new int[10];

		for(int j = 0; j < 10; j++)
			p[i][j] = n++;
	}

	return p;
}


调用:int** p = f();




注意的一点就是int** 和 int(*p)[]不能相互替换,虽然都可以以p[i][j]的方式使用。





版权声明:本文为oZhangZhongXun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。