我想在函数中更改2dim char数组。
我像
一样分配空间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);
但是在离开函数之后什么都没有。有人可以用这种方式解释我如何使用指针吗?
答案 0 :(得分:1)
您需要将功能中tmp
的引用更改为arr
。您根本没有访问参数arr
。此外,您在此处不需要char ***
,因为您没有更改分配给u
的空间。相反,您应该有参数char **arr
,您可以将其作为arr[i][j]
进行访问。然后,您应该将u
传递给rem
,而不是&u
。