new an array [12][12];
char * * m;
m = new char * [ 12 ];
for( int i = 0 ; i < 12 ; i ++ )
     m[i] = new char [ 12 ];

解决方案 »

  1.   

    既然能new还不知道delete吗?
    for....delete[] m[i]...;
    delete []m....;
      

  2.   

    typedef int ARRAY_TYPE[11][12];ARRAY_TYPE *p;p = (ARRAY_TYPE *)new int[11 * 12];
    printf("%d\n", p[0][1]);
    delete[] p;
      

  3.   

    一维数组是指针,可将二维数组看作是指针的指针:每一行是一个一维数组,而列是指向行的指针。在动态创建时,先分配指向行的指针空间,再循环维每一行申请空间。template <class T> void make2d(T**&list,int rows,int cols)即为分配二维数组的函数,main()里试验了该函数,注意int **a的用法--指向指针(一维数组)的指针#include <iostream>template <class T> void make2d(T**&x,int rows,int cols);
    void main(void)
    {
      int **a;
      make2d(a,3,3);
      a[0][0]=1;
      for (int rows=0;rows<3;rows++)
      {
        for (int cols=0;cols<3;cols++)
          a[rows][cols]=rows+cols;
      }
      for (int rows=0;rows<3;rows++)
      {
        for (int cols=0;cols<3;cols++)
          cout << a[rows][cols] << endl;;
      }
      cin.get();
    }
    template <class T> void make2d(T**&list,int rows,int cols)
    {
      list=new T*[rows];
      for (int i=0;i<rows;i++)
      {
        list[i]=new int[cols];
      }