二维数组是以行和列的形式表示的多维数组类型,也称为矩阵。
动态分配是指在运行时分配内存。动态内存分配允许程序在执行时获得更多内存,或者在不需要时释放内存。
现在朝着我们的目标前进,将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