Создание Jagged 3D массива в C - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь создать динамический 3D-массив с использованием C. идея состоит в том, чтобы создать трехмерный массив, который будет выглядеть примерно так

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 голосов
/ 09 февраля 2012

Следующая функция выделяет память для вашего динамического массива.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, в противном случае массив может быть заполнен случайными значениями.

Также следует соблюдать осторожность, чтобы не читать и не записывать массивы/ размеры границы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...