Что делает эта строка кода? - PullRequest
0 голосов
/ 26 сентября 2010
void expand_combinations(const char *remaining_string, string const & s, int rema
in_depth)
{
    if(remain_depth==0)
    {
        std::cout << s << std::endl;
        return;
    }

    for(int k=0; k < strlen(remaining_string); ++k)
    {
        string str(s);
        str.append(1, remaining_string[k]);
        expand_combinations(remaining_string+k+1, str, remain_depth - 1); // what?
    }
    return;
}

При вызове функции она передает строку + целое число.Что это становится?

Ответы [ 2 ]

5 голосов
/ 26 сентября 2010

Остаток_строка не является строкой; это указатель на символ. Поэтому добавление к нему целого числа просто перемещает указатель.

Например, если char *blah = "hello", то blah+1 будет указывать на "ello".

3 голосов
/ 26 сентября 2010

Он передает указатель на k + 1-й символ. По мере того, как он спускается в рекурсию, каждый вызов начинается все дальше и дальше в строку.

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