从功能中改变价值

时间:2011-05-02 04:30:02

标签: c++ c function pointers

我想在函数中更改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);

但是在离开函数之后什么都没有。有人可以用这种方式解释我如何使用指针吗?

1 个答案:

答案 0 :(得分:1)

您需要将功能中tmp的引用更改为arr。您根本没有访问参数arr。此外,您在此处不需要char ***,因为您没有更改分配给u的空间。相反,您应该有参数char **arr,您可以将其作为arr[i][j]进行访问。然后,您应该将u传递给rem,而不是&u