编辑代码

#include <iostream>
using namespace std;

//为一个二维数组动态分配内存
template<typename T>
void make2dArray(T **&x,int numberOfRows,int numberOfColumns)
{
    //创建行指针并分配空间
    x=new T*[numberOfRows];
    //为每一行分配空间
    for(int i=0;i!=numberOfRows;i++)
        x[i]=new T[numberOfColumns];
}

//释放二维数组动态分配的内存
template<typename T>
void delete2dArray(T **&x,int numberOfRows)
{
    //删除每行分配的空间
    for(int i=0;i!=numberOfRows;i++)
        delete[] x[i];
    //删除行指针分配的空间
    delete[] x;
    x=nullptr;
}

int main()
{
   int **a;
   // make a 2 x 2 array
   make2dArray(a,2,3);
   // assign values to all elements of the array
   a[0][0] = 1; a[0][1] = 2; a[0][2] = 3;a[1][0] = 4; a[1][1] = 5;a[1][2] = 6;
   // output assigned values
   cout << a[0][0] << ' ' << a[0][1] <<' ' << a[0][2] <<endl;
   cout << a[1][0] << ' ' << a[1][1] << ' ' <<a[1][2] <<endl;
   delete2dArray(a,2);

   double **b;
      // make a 2 x 2 array
   make2dArray(b,2,2);
   // assign values to all elements of the array
   b[0][0] = 1.1; b[0][1] = 2.2; b[1][0] = 3.3; b[1][1] = 4.4;
   // output assigned values
   cout << b[0][0] << ' ' << b[0][1] << endl;
   cout << b[0][0] << ' ' << b[1][1] << endl;

   delete2dArray(b,2);
   
   return 0;
}