二维数组是以行和列的形式表示的多维数组类型,也称为矩阵。
动态分配是指在运行时分配内存。动态内存分配允许程序在执行时获得更多内存,或者在不需要时释放内存。
现在朝着我们的目标前进,将2D数组传递给函数需要两个参数rows和columns,它们是运行时变量,即2D数组的大小(=rows*columns)在运行时决定/分配。
因此,为了应对这种情况,我们使用了指针。使用指针,很容易通过函数传递和访问数组。
有两种方法可以将动态2D数组传递给函数:
使用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