从函数改变值
我想更改函数中的 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);
但离开函数后就没有任何内容了。有人可以解释我如何以这种方式使用指针吗?
I want to change a 2dim char array in a function.
I allocate the space like
char **u;
u = new char * [ MAX_DEPTH ];
for (i=0; i<MAX_DEPTH; i++)
u[ i ] = new char [ BUFFER_SIZE ];
the function looks like
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';
}
}
the function will be used in my main program.
rem( &u, MAX_LEN, url);
but after leaving the function there is nothing in. Could someone explain me how to use pointers in this way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将函数中对
tmp
的引用更改为arr
。您根本没有访问参数arr
。另外,您在这里不需要char ***
,因为您没有更改分配给u
的空间。相反,您应该具有参数char **arr
,您可以通过arr[i][j]
访问该参数。然后您应该将u
传递给rem
,而不是&u
。You need to change the reference to
tmp
in your function, toarr
. You aren't accessing the parameterarr
at all. Also, you do not needchar ***
here, since you aren't changing the space allocated tou
. Instead, you should have parameterchar **arr
, which you access asarr[i][j]
. And you should then passu
torem
, rather than&u
.