我想申明float型的二维或三维动态数组,请问如何实现。我看了前面的帖子,有的话用指针,有的说用CArray,可是我都不会用:(  谁能给出详细的程序(包括申明及对其的赋值)?谢谢!

解决方案 »

  1.   

    http://www.chinaithero.com/dev/vccool/sys_mem/2.htm
      

  2.   

    示例:声明二维动态数组array[a][b],其中a,b已知
    声明和定义:
    float **array = new float *[a];
    for(int i = 0; i < a; i++)
    array[i] = new float [b];
    删除:
    for(int i = 0; i < a; i++)
    delete [] array[i];
    delete [] array;
      

  3.   

    我知道可以这样
    CArray<CArray<float,float>*,CArray<float,float>*> m_ar;
    //要包含afxtempl.h文件
    然后具体用的时候这样。
    #define MAX_SIZE 10;
    for(int i=0;i<MAX_SIZE;i++)
    {
      CArray<float,float> artemp;
      m_ar.Add(&artemp);
    }
    可以的。
      
      

  4.   

    谢谢Anstinus(笨笨龙),二维的可以了,要是三维的又该怎么办?
      

  5.   

    谢谢smallsunfish(太阳鱼) ,可是用CArray,添加元素时好麻烦
      

  6.   

    不会吧,麻烦不是吧,Add就行了呀
      

  7.   

    我的是2x3维数组动态分配的c实现#include <stdio.h>int main()
    {
    int *p;
    int *head;
    int i,j;head=(int*)malloc(2*3*sizeof(int));
    p=head;for (i=0; i<2;i++)
    for (j=0; j<3;j++)
    {
    scanf("%d",p);
    p++;
    }p=head;for (i=0; i<2;i++)
    for (j=0; j<3;j++)
    {
    printf("%d ",*p);
    p++;
    }
    printf("\n");
       return 0;
    }
      

  8.   

    三维的:
    声明和定义:
    float ***array = new float **[a];
    int i,j;
    for(i = 0; i < a; i++)
    {
    array[i] = new float *[b];
    for(j = 0; j < b; j++)
    array[i][j] = new float [c];
    }
    删除:
    for(i = 0; i < a; i++)
    {
    for(j = 0; j < b; j++)
    delete [] array[i][j];
    delete [] array[i];
    }
    delete [] array;
      

  9.   

    可以这样
    int **a;
    printf("请输入二维数组的维数\n");
    scanf("%d%d",&n,&m);
    a=(int**)malloc(n*sizeof(int*));
    for(i=0;i<m;i++)
      a[i]=(int*)malloc(m*sizeof(int));
    希望对你有帮助