我在MyFunction(x,y)函数中定义了两个数组:A[][3]; B[][3];
但是它们的行数是由x,y计算得到的。这样无法在编译时候确定A和B的大小。
我应该怎样使用二维的动态数组呢?
谢谢!

解决方案 »

  1.   

    int *a = 0;
    int *b = 0;
    a = new int [x][3];
    b = new int [y][3];
    .
    .
    .
    delete [] a;
    delete [] b;
      

  2.   

    int ** array;
    *array=new int[length1];
    for(int i=0;i<length1;i++)
    {
        array[i]=new int[length2];}
      

  3.   

    用二级指针.这样:
    int **array;
    int m,n;
    m=9;n=8;
    array=new int[m];
    for(int i=0;i<4;i++)
    {
     *(array+i)=new int[n];
    }这样你就有一个mXn的数组
    这样用:array[0][0]=8;
      

  4.   

    用mayanist(玛雅人) 的方法不就可以两个维数都是变量吗
      

  5.   

    sunheart(深蓝) 说法有误,这样得到的是一个指针数组,使用mayanist(玛雅人)的方法a = new int [x][y];就可以了
      

  6.   

    但是这样应该是不行的吧:
    int **A = 0;
    int **B = 0;
    A = new int [m][n];
    B = new int [m][n];
    是不是应该这样呢:
    A = new int*[m]
    B = new int*[m];
    for (i=0; i < m; i++){
    A = new double[n];
    B = new double[n];
    }
    然后:
    for (i=0; i<n; i++)
    {
    delete [] A[i];
    delete [] B[i];
    }
    delete [] A;
    delete [] B;
    A = 0;
    B = 0;
      

  7.   

    呵呵,抱歉我敲漏了个*,致命啊!下面是正确的代码:
             int **array;
    int m,n;
    m=2;n=2;
    array=new int*[m];  //注意,这里是分配指针数组
    for(int i=0;i<m;i++)
    {
    *(array+i)=new int[n];
    }
    array[0][0]=1;
    array[0][1]=2;
    array[1][0]=3;
    array[1][1]=4;
      //别忘了释放内存
            for( i=0;i<m;i++)
     delete[] array[i];
    delete[] array;
      

  8.   

    sunheart(深蓝)所说是正确的,二维数组就是一指针的数组,一维数组是一指针。a = new int [x][y];这样恐怕不行。
      

  9.   

    我在做图象处理时就这么用的。对上面的代码解释一下:array是个变量,里面存放一个指针值,但应注意,由于array是个二级指针,所以*(array)里的值还是指针,只有**(array)才是真正的值。现在再看看如何实现二维数组的功能。先给array分配一个指针数组,也就是说这个数组里的值全是指针。然后,让这些指针再分别独自指向一个数组,这个数组里是我们最终的值。这样,我们就得到了多个一维数组,呵呵,这就是二维数组啊!!
      

  10.   

    int *a = 0;
    int *b = 0;
    a = new int [x][y];
    b = new int [x][y];
    .
    .
    .
    delete [] a;
    delete [] b;
    这个方法不可以吗?我不知道错在哪里?小弟也是初学者,还希望各位赐教,谢谢