我正在尝试使用 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 是输入。
谁能建议如何做到这一点?
我正在尝试使用 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 是输入。
谁能建议如何做到这一点?
以下函数为您的动态数组分配内存。elem_size
是每个元素的大小,n
是指第一个维度的大小,其他两个维度是 sized 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
,否则数组可能会填充随机值。
此外,您应该注意不要读取/写入数组/维度边界。