纯c语言实现动态分配多维数组的方法
来源:互联网 发布:js 控制transition 编辑:程序博客网 时间:2024/04/29 17:12
普通的动态内存分配只能分配一维的数组:
例如:
#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]之类的直接使用了,释放方法同上。
这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了
例如:
#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]之类的直接使用了,释放方法同上。
这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了
- 纯c语言实现动态分配多维数组的方法
- 纯c语言实现动态分配多维数组的方法
- c/c++ 多维数组的动态分配
- 多维数组的动态分配
- 多维数组的动态分配
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- 【转】c语言中内存的动态分配与释放(多维动态数组构建)
- C语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- c语言中内存的动态分配与释放(多维动态数组构建)
- C语言动态分配数组程序实现
- C 语言动态分配数组
- C语言动态分配数组
- C语言中的类模拟
- 设计模式之--Bridge
- java中final用法
- 旧的位置 重新的开始
- Windows API一日一练(33)ExtCreatePen函数
- 纯c语言实现动态分配多维数组的方法
- ATM交换技术
- tcp中close_wait状态出现的原因
- 2007-9-10
- 开始学习JAVA了
- 跨站漏洞解析-小韩网站编程安全系列一
- md5加密之纯C语言版
- 上传漏洞解析-小韩网站编程安全系列二
- 2006年度中国纳税百强排行榜正式发布