纯c语言实现动态分配多维数组的方法
来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:17:13
(这条文章已经被阅读了 406 次) 时间:2005/03/17 10:59am 来源:wayne
普通的动态内存分配只能分配一维的数组:
例如:
#define ARRAY_SIZE 1024 ;
unsigned char * pa = NULL ;
pa = (unsigned char *)malloc(ARRAY_SIZE) ;
然后就可以pa[1], pa[0] ...当成一维数组操作了。
释放的时候:
free(pa) ;
但是,很多情况下,我们需要动态的二维数组,乃至多维数组,例如矩阵计算,有限元分析,三维实体建模等等。那么如何利用普通的c语言,实现多维数组呐?
(这次做lcd的驱动程序,我特意研究了一下方法)
动态二维数组:
#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]之类的直接使用了,释放方法同上。
这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了。
普通的动态内存分配只能分配一维的数组:
例如:
#define ARRAY_SIZE 1024 ;
unsigned char * pa = NULL ;
pa = (unsigned char *)malloc(ARRAY_SIZE) ;
然后就可以pa[1], pa[0] ...当成一维数组操作了。
释放的时候:
free(pa) ;
但是,很多情况下,我们需要动态的二维数组,乃至多维数组,例如矩阵计算,有限元分析,三维实体建模等等。那么如何利用普通的c语言,实现多维数组呐?
(这次做lcd的驱动程序,我特意研究了一下方法)
动态二维数组:
#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]之类的直接使用了,释放方法同上。
这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了。
纯c语言实现动态分配多维数组的方法
[059]?C语言中动态分配数组(一维) -- 一步一脚印 -- 编程爱好者博客
指向数组的指针与多维数组
多维数组的指针变量
多维数组的指针变量
vb.net的多维数组
对多维数组的理解
数组与指针的艺术--深入探索c/c++数组与指针的奥秘 - C/C++ / C++ 语言
CSDN技术中心 第二章 再一次吃惊----数组的数组与多维数组的区别
第二章 再一次吃惊----数组的数组与多维数组的区别 - 飞天御剑流
C#2.0纯数学方法递归实现货币数字转换中文-太平洋电脑网Pconline-[C/C ]
C#2.0纯数学方法递归实现货币数字转换中文-太平洋电脑网Pconline-[C/C ]
c语言中如何读入未知二维数组的行数和列数?
对于C语言中指针和数组的认识和看法
C语言之指针、数组和函数 - 雨后阳光的日志 - 网易博客
PHP多维数组排序
多维数组与指针
用C语言实现的闹钟程序 - 软件屋
在WEB项目中多维下拉菜单的实现技巧和方法
完数—C语言实现
求八阶低通数字滤波器C语言实现程序1
完数—C语言实现
伟大的C语言
C语言实现静态链表的基本操作 - 枫叶的日志 - 网易博客