如何实现 二维数组的动态内存分配?

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:11:51
如题
可不可以这样,比如:
int (*p)[10]=new int[10][10];

要明白2维数组是指向指针的指针

例子:
int** a=new int*[n];
for(int i=0;i!=n;i++)
a[i]=new int[n];

//////////////

可以

3L的说LZ的方法不行

行不行 试试再说
#include <iostream>
using namespace std;
int main(){
int (*a)[10]= new int[10][10];
a[0][0]=1;
a[9][9]=2;
cout<<"a[0][0]= "<<a[0][0]<<endl;
cout<<"a[9][9]= "<<a[9][9]<<endl;
return 0;
}
G++ 编译没问题
能运行

LZ可以去试下

建议你到网上查下什么是数组指针, 什么是指针数组.
int (*p)[10]=new int[10][10];
这表示一个int型的指针p, p指向一个10*10共100个int空间的二维数组.

你那样是不行的。
有两种方法,一种楼上已经说了。
另一种就是先用一维的把行和列的空间申请下来,然后把它拆成二维的。
例:
int a[25]=new int[5*5];
可以拆成你想要的行和列。

//动态分配二维数组空间
{
m_iHight=10;//二维数组的高度
m_iWidth=10;//二维数组的宽度
//动态分配一个二维数组m_ppTable内存空间
//其类型为int
//m_ppTable指向该数组
int **m_ppT