定义动态 二维数组

来源:百度知道 编辑:UC知道 时间:2024/06/06 02:26:18
如果我定义一个动态二维数组用如下方法:
int x,y,**p;
cin>>x>>y;
p=new int*[x]; //int *[x]是个指针数组吗?
for(int i=0;i<x;i++)
p[i]=new int[x];

是的。p是总指针,x是行指针,p【i】也是行指针。
最后一行可以要改一下:p[i]=new int[y];意思是,
每行申请int y 个空间

不能双坐标都动态的,除非你用1维数组模拟2维数组。
int *p = new int[x*y];
第一行第一列
p[0*y+0]
第2行第2列
p[1*y+1]
第i行第j列
p[i*y+j]

或者根据2维数组是一维数组的数组这句话来定义。但是这样就必须明确列数
typedef int ARR10[10];

ARR10 *p = new ARR10[x];

这样我们就定义了x*10个元素的2维数组。
用法和2维数组一样

为什么不用 y 这个变量啊,应该是
for(int i=0;i<x;i++)
p[i]=new int[y];

这样才完美无缺