从函数更改值

changing value from function

本文关键字:函数      更新时间:2023-10-16

我想改变一个函数中的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] != ''; i++)
            (*arr)[idx][i] = p[i];
        for (     ; i< maxUrlSize-1; i++)
            (*arr)[idx][i] = '';
    }
}

这个函数将在我的主程序中使用。

rem( &u, MAX_LEN, url);

,但离开函数后,没有任何内容。有人能告诉我如何这样使用指针吗?

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