【发布时间】:2020-07-20 10:19:33
【问题描述】:
我正在尝试使用函数在开头重置指针的位置。我的想法是将字符串数组的地址发送给函数。通过减少指针,它也应该在内存中减少,所以一旦回到我的主函数中,我应该能够再次从头开始操作我的指针,但这似乎不起作用并且位置保持不变。
void reset(char ***g,int count){
for (int i = 0; i < count; i++){
g--;
}
}
主要是:
char **array_of_strings = malloc etc....
//doing my operations and incrementing the pointer position
reset(&array_of_strings,count); //where count is how many time position of array_of_strings has been incremented
free(array_of_strings); //invalid pointer position
我还假设创建一个返回具有减小位置的新指针的函数是无用的,因为我们还不能释放原始指针,它可能在另一个上下文中有用,但在这个上下文中没有。
【问题讨论】:
-
g--的正确性如何?g是reset函数中的局部变量。也许您需要*g--之类的东西?附言这是来自一个非常快速的概述。这在您的代码中似乎是错误的 -
@SuraajKS 一开始我也是这么想的,但是这样也行不通
-
//doing my operations with the pointer是个坏主意。最好只记住你得到 ftom malloc() 的指针。如果您需要一个额外的指针(或索引),只需声明另一个指针。 -
我同意@wildplasser。最好使用另一个指针来迭代字符串数组
-
@wildplasser 无论我使用多少个别名指针,我都需要在最后释放它们,并且由于位置不好,其中至少有一个会遇到同样的问题。我的想法是创建一个函数来循环这个过程,因为“for循环”在主函数中正常工作。