Я пытаюсь напечатать 4D-куб, используя ****
указатели
#include <stdio.h>
#include <stdlib.h>
#define DIM 4
void printCube(char ****cube, int dim) {
int x, y, z;
for (z = 0; z < dim; z++) {
for (y = 0; y < dim; y++) {
for (x = 0; x < dim; x++) {
printf("%c ", *cube[z][y][x]);
}
printf("\n");
}
printf("------------------------------------\n");
}
}
int main() {
char ***cube = (char ***)malloc(sizeof(char **) * DIM);
int x, y, z;
for (z = 0; z < DIM; z++) {
cube[z] = (char **)malloc(sizeof(char **) * DIM);
for (y = 0; y < DIM; y++) {
cube[z][y] = (char *)malloc(sizeof(char *) * DIM);
for (x = 0; x < DIM; x++) {
cube[z][y][x] = ((x + y + z) % 26) + 'A';
}
}
}
printCube(&cube, DIM);
for (z = 0; z < DIM; z++) {
for (y = 0; y < DIM; y++) {
for (x = 0; x < DIM; x++) {
free(cube[z][y][x]);
}
free(cube[z][y]);
}
free(cube[z]);
}
free(cube);
return 0;
}
Я уверен, что ошибка проста, но я пытался выяснить это в течение нескольких часов.
Должно быть просто, что я должен использовать указатель на printf
что-то еще (потому что, если я печатаю только символы, оно работает нормально)
printf("%c ", *cube[z][y][x]);
есть ли у кого-нибудь советы для меняКак исправить этот код?
Очень ценю вашу поддержку.