//动态分配二维数组空间
{
m_iHight=10;//二维数组的高度
m_iWidth=10;//二维数组的宽度
//动态分配一个二维数组m_ppTable内存空间
//其类型为int
//m_ppTable指向该数组
int **m_ppTable;
m_ppTable=new int *[m_iHight];
//动态分配m_iHight个类型为int *的内存空间
//分配的是行地址空间
for(int i=0;i
//动态分配m_iWidth个类型为int的内存空间
//分配的是某行的数值空间
}
//由此分配的二维数组空间并非是连续的
//可以使用m_ppTable[row][col]来给该二维数组赋值
//其中 0<=row
//释放所分配的内存空间
{
for(int i=0;i
delete [m_iHight]m_ppTable; //释放行地址空间
}
要明白2维数组是指向指针的指针
例子:
int** a=new int*[n];
for(int i=0;i!=n;i++)
a[i]=new int[n];
//////////////
可以
3L的说LZ的方法不行
行不行 试试再说
#include
using namespace std;
int main(){
int (*a)[10]= new int[10][10];
a[0][0]=1;
a[9][9]=2;
cout<<"a[0][0]= "< cout<<"a[9][9]= "< return 0;
}
G++ 编译没问题
能运行
LZ可以去试下
你那样是不行的。
有两种方法,一种楼上已经说了。
另一种就是先用一维的把行和列的空间申请下来,然后把它拆成二维的。
例:
int a[25]=new int[5*5];
可以拆成你想要的行和列。
建议你到网上查下什么是数组指针, 什么是指针数组.
int (*p)[10]=new int[10][10];
这表示一个int型的指针p, p指向一个10*10共100个int空间的二维数组.