回 帖 发 新 帖 刷新版面

主题:[讨论]请问仅使用一个malloc()如何写三维阵列

请教各版上的前辈,如同标题:仅使用一个malloc()如何写三维阵列。

上传图片是我写的,但是有问题。请问是那边写错又是那边的观念有误!?谢谢!

想了很久还是作不出来!

以下网址是我整个在测试的程序:http://nopaste.csie.org/c7900

回复列表 (共8个回复)

沙发

有病

板凳

何病?

3 楼

unsigned char* space = (unsigned char*)malloc(Time * Width * Height);

4 楼

谢谢您的回覆。但是您的程序是一维的,不是三维。所以无法以三维的表示方式来运用如:*(*(*(3D + i) +j) +K) ro 3D[i][j][k]

5 楼

[quote]有病[/quote]
何病!?谢谢!

6 楼

楼主,发个用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 楼

for(i = 0; space2d = (unsigned char **)(space3d + Time); i < Time, space2d += Height)
    space3d[i] = space2d;    
这个实现怎么看着有问题呢?
我认为把+=Height放到(space3d + Time)里面会不会好一些呢

8 楼

额 我又发现了……你这个程序的循环体怎么没有循环变量的自增?

我来回复

您尚未登录,请登录后再回复。点此登录或注册