【发布时间】:2016-11-12 21:52:49
【问题描述】:
我是整个 C 编程领域的新手(来自 Java),老实说,这真的令人困惑。好的,我正在尝试为我的 2D 字符串数组分配连续的数据块(猜测它类似于 3D 数组??)。我所拥有的就是我相信字符串数组的连续分配? 有人可以帮我解决二维数组吗?
是的,我在运行程序之前就知道大小,它定义为 ROWS 用于行,COLS 用于列,NAME 用于字符串长度。
char **people = malloc(COLS * sizeof(char *));
people[0] = malloc(COLS * NAME);
for(int i = 1; i < COLS; i++)
people[i] = people[0] + i * NAME;
【问题讨论】:
-
您的代码从不使用 ROWS。这是故意的吗?
-
我忘了说这段代码应该为字符串数组分配连续的数据。对于 1D 数组而不是 2D,我无法弄清楚我需要帮助的 2D 事物,这就是我从未使用过 ROWS 的原因。
-
char (*people)[COLS][NAME] = malloc(ROWS * sizeof *people);应该可以完成这项工作。