一个二维数组在内存中实际上是一个连续的一维线性数组,在程序中我们通常使用二维数组名来指向这个数组。二维数组名实际上是一个指向第一个一维数组的指针,也就是该二维数组的首元素地址,它可以用作指向整个二维数组的指针变量,可以进行传参、赋值等操作。例如,如果我们有一个int类型的二维数组arr[3][4],那么arr就是这个二维数组的名称或者叫做标识符,也代表了该二维数组第一个元素(即arr[0][0])对应的地址。
定义二维数组时不能使用变量
- 如果开辟数组前不知道要开辟数组的大小,可以用下面的方法开辟
1.先开辟一个指针数组,数组存放的数据类型为int*
2.指针数组中的每个元素指向一个整形数组
#include <iostream>
using namespace std;
void PrintMaze(int** maze,int n,int m)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<maze[i][j]<<' ';
}
cout<<endl;
}
}
int main()
{
int n=0,m=0;
cin>>n>>m;
//开辟二维数组
int** maze=new int*[n];
for(int i=0;i<n;i++)
{
maze[i]=new int[m];
}
//输入二维数组
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>maze[i][j];
}
}
PrintMaze(maze,n,m);
}