изменение значения из функции - PullRequest
0 голосов
/ 02 мая 2011

Я хочу изменить массив 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 Ответ

1 голос
/ 02 мая 2011

Вам необходимо изменить ссылку на tmp в вашей функции на arr. У вас нет доступа к параметру arr. Кроме того, вам не нужно char *** здесь, так как вы не изменяете пространство, выделенное для u. Вместо этого у вас должен быть параметр char **arr, к которому вы обращаетесь как arr[i][j]. И тогда вы должны передать u на rem, а не &u.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...