• 纯c语言实现动态分配多维数组的方法

    2006-04-09

    Tag:C_C++

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://etdata.blogbus.com/logs/2232838.html

    转载自Fish-Bowl

    普通的动态内存分配只能分配一维的数组:
    例如:
    #define ARRAY_SIZE    1024 ; 
    unsigned char * pa = NULL ; 
    pa = (unsigned char *)malloc(ARRAY_SIZE) ;
    然后就可以pa[1], pa[0] ...当成一维数组操作了。
    释放的时候:
    free(pa) ; 

    但是,很多情况下,我们需要动态的二维数组,乃至多维数组,例如矩阵计算,有限元分析,三维实体建模等等。那么如何利用普通的c语言,实现多维数组呐?

    动态二维数组:
    #define ARRAY_SIZE     20*20
    //这里是20x20的矩阵
    unsigned char (*matrix_1)[20] ;
    matrix_1 = (unsigned char (*)[20])malloc(ARRAY_SIZE) ; 
    然后就可以matrix_1[0][0], matrix_1[0][1]。。。这样使用了。释放方式同一维数组。

    动态的三维数组:
    #define ARRAY_SIZE     5*32*32
    //定义了5桢,每桢是32x32的矩阵 
    unsigned char (*frame)[32][32] ;
    frame = (unsigned char (*)[32][32])malloc(ARRAY_SIZE) ; 
    然后就可以frame[0][0][0]之类的直接使用了,释放方法同上。

    这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了。

    收藏到:Del.icio.us