C中的锯齿状3D阵列创建

时间:2012-02-09 13:18:27

标签: c jagged-arrays multidimensional-array

我正在尝试使用C创建动态3D数组。 我的想法是创建一个看起来像这样的3D数组

A[0][128][128]
A[1][64][64]
A[2][32][32]
A[3][16][16]
A[4][8][8]
.....
A[n][1][1]

n,128,128是输入。

有人可以建议怎么做吗?

1 个答案:

答案 0 :(得分:0)

以下函数为动态数组分配内存。 elem_size是每个元素的大小,n是指第一个维度的大小,其他两个维度的大小为128

void* create_3Darray(size_t elem_size, size_t n) {
    return malloc(elem_size * n * 128 * 128);
}

用法:

int ***arr = create_3Darray(sizeof(int), 256);
arr[2][5][12] = 12;

您可以将malloc替换为calloc,将元素初始化为0,否则数组可能会填充随机值。

另外,您应该注意不要读取/写入数组/维度边界。