【发布时间】:2021-03-15 22:09:16
【问题描述】:
我想将char **pointer 的内容复制到另一个指针。我的尝试是:
void test(char **arr, int len) {
printf("1: ");
printArr(arr, len);
char ***res = malloc(sizeof(char **));
res[0] = malloc(sizeof(char *) * len);
memcpy(&res[0], arr, len);
printArr(res[0], len);
这里我只想将包含多个字符串的arr 的内容复制到r[0],其中len 表示arr 中的元素数。但是,在检查res[0] 时,我意识到它只存储了两次 null。可以看出我是一个非常初学者,并且已经学习了几天 C,所以可能会出现一些简单的错误。
【问题讨论】:
-
双指针已经很麻烦了。这里的三重指针(!!!)是什么?你只分配一个元素,你只使用一个元素。一个元素数组应该是一个变量。
-
这段代码真的没有任何意义。我越看它,我就越想知道发生了什么。这是如何使用的?它有什么用途?
-
@tadman 三重指针应该指向不同的字符串数组。我创建了不同的字符串数组并想检查它们是否尚未创建,因此我将它们存储在 res 中以记住哪些字符串数组已创建。这似乎效率低下,但由于它是一个带有用户输入的动态应用程序,我还没有找到更简单的解决方案
-
我意识到它只存储了两次 null。它应该存储什么?我们无法从这个不完整的代码 sn-p 中分辨出来。请以minimal verifiable example 的形式提供完整代码。还包括确切的预期结果与实际结果。
-
长度为 1 的数组并不是真正的数组。