间接通过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;
}

posted on 2010-04-08 16:05  王六石  阅读(506)  评论(0编辑  收藏  举报

导航