间接通过new 来申请一个二维的堆内存数组
我们知道无法直接通过new 来申请一个二维的堆内存数组,于是有人想出了这样一个办法:创建一个一维堆内存指针数组,即每个数组元素是一个指针,然后用new 给各个指针分配一个一维的堆内存数组,那么最后表示出来就像是一个二维的堆内存数组了。试编写一段程序,依照以上方法实现一个大小为8×8 的二维堆内存数组,数据类型为整型,并将数组元素依次赋值、输出。
运行结果示例:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
#include "iostream.h"
#include "iomanip.h"
int main()
{
int **superarray;//指向整型指针的指针(理解为快捷方式的快捷方式)
superarray=new int *[8];//为“指针的指针”申请堆内存(类型为int* 即整型指针)
for (int i=0;i<8;i++)
{
superarray[i]=new int[8];//为“指针”申请堆内存(类型为int 即整型)
}
for (int j=0;j<8;j++)
{
for (int k=0;k<8;k++)
{
superarray[j][k]=j*8+k;
cout<<setw(3)<<superarray[j][k];
}
cout<<endl;
}
for (int l=0;l<8;l++)
{
delete[]superarray[l];
}
delete[]superarray;
return 0;
}
运行结果示例:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
#include "iostream.h"
#include "iomanip.h"
int main()
{
int **superarray;//指向整型指针的指针(理解为快捷方式的快捷方式)
superarray=new int *[8];//为“指针的指针”申请堆内存(类型为int* 即整型指针)
for (int i=0;i<8;i++)
{
superarray[i]=new int[8];//为“指针”申请堆内存(类型为int 即整型)
}
for (int j=0;j<8;j++)
{
for (int k=0;k<8;k++)
{
superarray[j][k]=j*8+k;
cout<<setw(3)<<superarray[j][k];
}
cout<<endl;
}
for (int l=0;l<8;l++)
{
delete[]superarray[l];
}
delete[]superarray;
return 0;
}
![](http://img.zemanta.com/pixy.gif?x-id=b6cd82c6-3942-8115-84b3-3fc37f8ad057)