先给了例子吧:如要想创建一个[m][n]的二维数组。
下面为通过动态创建一个指针数组的方法来动态创建二维数组的方法。
double **data;
data = new double*[m]; //设置行 或直接double **data=new double*[m]; 一个指针指向一个指针数组。
for(int j=0;j<m;j++)
{
data[j] = new double[n]; //这个指针数组的每个指针元素又指向一个数组。
}
for (int i=0;i<m;i++)
for (int j=0;j<n;j++)
{
data[i][j]=i*n+j;//初始化数组元素
}
for (int i=0;i<m;i++)
{
delete[] data[i]; //先撤销指针元素所指向的数组
}
delete[] data; (别人的一个例子,我改得更易读点)。
这种方法是通过先动态创建一个指针数组,然后为指针数组的每个元素再动态指向一个数组的办法来完成的。其创建过程与销毁过程两样重要。
在销毁的过程,先销毁指针数组每个元素指向的数组,然后再销毁这个指针数组。
应该也许会有很多办法来完成。这只是一种方法,这也只是在自己用到时候套用别人的方法来写的,不过直到现在才理解是如何创建的。
知识只有在用的过程中才会掌握更细,理解更透彻。
点滴。坚持。
遗留问题:这种方法可以动态创建更高维的数组吗?
为了您的安全,请只打开来源可靠的网址
来自:
http://hi.baidu.com/%C7%EF%B3%C7%C7%EF%C8%CB/blog/item/814ca9290edd9afb99250ae5.html