用C语言创建锯齿状三维阵列

用C语言创建锯齿状三维阵列,c,jagged-arrays,multidimensional-array,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、 128128是输入 有人可以建议如何执行此操作吗?以下函数为动态数组分配内存elem_size是每个元素的大小,n是指第一个维度的大小,其他两个维度的大小是128 void* create_3Darray(size_t elem_size, si

我正在尝试使用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、 128128是输入


有人可以建议如何执行此操作吗?

以下函数为动态数组分配内存
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;
您可以用
calloc
替换
malloc
,将元素初始化为
0
,否则数组可能会被随机值填充


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

如果子维度都是常量大小,则这不是锯齿状数组。只需说
新的AType[n][128][128]
,当然可以吗?另请看这个问题:我刚才使用的子维度与示例相同,它们在实际程序中可能不同。很抱歉没有说清楚。不管怎么说,现在开始工作了@放松:是的,我想这是一种mip映射。实际上我在为多重网格方法编写代码。A是存储不同网格的所有值的矩阵如果我理解正确,我仍然会有一个像arr[0][5][12]这样的3D数组;arr[1][5][12];arr[2][5][12]…在这种情况下,我仍然为每个arr使用5X12 2D数组[n]我试图做的可能是一个锯齿状的3D数组,你是对的,它是一个简单的3D数组,而不是锯齿状的。对于锯齿状数组,您需要每个子数组的大小信息,这些信息必须传递给分配函数。要使其工作,必须更改For循环中的DIM。谢谢