【发布时间】:2011-05-02 04:30:02
【问题描述】:
我想在函数中更改一个 2dim 字符数组。
我像这样分配空间
char **u;
u = new char * [ MAX_DEPTH ];
for (i=0; i<MAX_DEPTH; i++)
u[ i ] = new char [ BUFFER_SIZE ];
函数看起来像
rem(char ***arr, int max_length, char *url)
{
int idx=0;
char * p;
int i;
p = strtok (url,"/");
while (p != NULL && idx < max_length)
{
for ( i=0; i<maxUrlSize-1 && p[i] != '\0'; i++)
(*arr)[idx][i] = p[i];
for ( ; i< maxUrlSize-1; i++)
(*arr)[idx][i] = '\0';
}
}
该函数将在我的主程序中使用。
rem( &u, MAX_LEN, url);
但是离开函数后,里面什么都没有。有人能解释一下如何以这种方式使用指针吗?
【问题讨论】:
-
没有什么明显的错误,但多于 1 行的片段确实有帮助 - 我们必须推断函数实现是 rem(char ***tmp, int ?) 代码甚至开始有意义。
-
你贴的代码都是正确的。
-
从函数来看,这段代码看起来绝对没问题。您能否提供有关如何从程序的其他部分调用此方法的代码。
-
@Roby:请编辑并对齐您的代码。一位成员第一次为你做这件事时付出了很大的努力,你应该从那里学习......不能让你的编辑无限循环然后反编辑以使其可读。
-
没有看到
rem中的实际代码,您所拥有的看起来还不错。但是,除非您在函数rem内重新分配分配给u的空间,否则您实际上不需要在此处传递&u。只需传递u即可。接收参数tmp应该只是char **,您可以使用tmp[i][j]访问它。编辑评论:tmp是什么?看起来像一个全球性的。