将动态分配的二维数组传递给函数[使用C ++程序]

二维数组是以行和列的形式表示的多维数组类型,也称为矩阵。

动态分配是指在运行时分配内存。动态内存分配允许程序在执行时获得更多内存,或者在不需要时释放内存。

现在朝着我们的目标前进,将2D数组传递给函数需要两个参数rows和columns,它们是运行时变量,即2D数组的大小(=rows*columns)在运行时决定/分配。

因此,为了应对这种情况,我们使用了指针。使用指针,很容易通过函数传递和访问数组。

有两种方法可以将动态2D数组传递给函数:

1)将数组作为指针传递给指针(int ** arr)

使用new运算符,我们可以在运行时为数组动态分配内存。New运算符返回分配的空间的地址。此方法将数组引用作为双指针传递给函数以及行和列。

#include<iostream>
using namespace std;

//显示二维数组的函数
void show(int **arr,int x,int y)
{
	int i,j;
	for(i=0;i<x;i++)
	{ 
		for(j=0;j<y;j++)
		{
			cout<<arr[i][j]<<" ";
		}
		cout<<endl;
	}
}

//主程序
int main(){  
	int n,m;
	//输入行数和列数
	cout<<"Enter No. of rows: ";
	cin>>n;
	cout<<"Enter No. of columns: ";
	cin>>m;

	//指向2D数组的指针
	int **A=new int*[n];

	//指针初始化
	for(int i=0;i<n;i++)
	{
		A[i]=new int[m];
	}

	//输入数组元素
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>A[i][j];
		}
	}

	//显示2D数组
	show(A,n,m);

	return 0;
}

输出结果

Enter No. of rows: 4
Enter No. of columns: 5
1 2 3 4 5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 2 

1 2 3 4 5
1 2 3 4 5
6 7 8 9 1
2 3 4 5 2