主题:[讨论]请问仅使用一个malloc()如何写三维阵列
Macon
[专家分:0] 发布于 2010-12-09 23:49:00
请教各版上的前辈,如同标题:仅使用一个malloc()如何写三维阵列。
上传图片是我写的,但是有问题。请问是那边写错又是那边的观念有误!?谢谢!
想了很久还是作不出来!
以下网址是我整个在测试的程序:http://nopaste.csie.org/c7900
回复列表 (共8个回复)
沙发
bruceteen [专家分:42660] 发布于 2010-12-10 08:32:00
有病
板凳
强强 [专家分:4740] 发布于 2010-12-10 21:57:00
何病?
3 楼
eastcowboy [专家分:25370] 发布于 2010-12-10 23:31:00
unsigned char* space = (unsigned char*)malloc(Time * Width * Height);
4 楼
Macon [专家分:0] 发布于 2010-12-11 20:04:00
谢谢您的回覆。但是您的程序是一维的,不是三维。所以无法以三维的表示方式来运用如:*(*(*(3D + i) +j) +K) ro 3D[i][j][k]
5 楼
Macon [专家分:0] 发布于 2010-12-11 20:12:00
[quote]有病[/quote]
何病!?谢谢!
6 楼
luotuo44 [专家分:0] 发布于 2010-12-12 19:43:00
楼主,发个用malloc() 函数构建一个二维数组的方法给你,你参照一下,就能自己写出一个三维的了。
#include<stdio.h>
#include<malloc.h>
void main()
{
int **p;
int n;//行数
int m;//列数
int i;
scanf("%d %d",&n,&m);
p=(int **)malloc(n*sizeof(int * ));
for(i=0; i< n; ++i)
{
p[i] = (int *)malloc(m* sizeof(int));
}
}
7 楼
沉睡之子 [专家分:0] 发布于 2010-12-13 22:30:00
for(i = 0; space2d = (unsigned char **)(space3d + Time); i < Time, space2d += Height)
space3d[i] = space2d;
这个实现怎么看着有问题呢?
我认为把+=Height放到(space3d + Time)里面会不会好一些呢
8 楼
沉睡之子 [专家分:0] 发布于 2010-12-13 22:46:00
额 我又发现了……你这个程序的循环体怎么没有循环变量的自增?
我来回复