gpt4 book ai didi

c - 使用 4 维立方体的指针

转载 作者:行者123 更新时间:2023-12-01 13:16:01 26 4
gpt4 key购买 nike

我正在尝试使用 **** 指针打印 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]);

有人可以告诉我如何更正此代码吗?

非常感谢您的支持。

最佳答案

cube 传递给 printCube 时不需要获取 cube 的地址。相反,只需直接传递它,在 printCube 中将其声明为 char ***,然后将其作为 cube[z][y][x]printCube 中。

现在的情况是,您在 printCube 中使用 *cube[z][y][x],这不起作用,因为 *[] 绑定(bind)更松散。如果您将其更改为 (*cube)[z][y][x],它就会起作用。但正如我所说,一开始就不需要额外的间接级别。

关于c - 使用 4 维立方体的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com