这行代码有什么作用?

时间:2010-09-26 01:36:05

标签: c++ function

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 个答案:

答案 0 :(得分:5)

remaining_string不是字符串;它是指向角色的指针。因此,向其添加一个整数只会移动指针。

例如,如果char *blah = "hello",则blah+1会指向"ello"

答案 1 :(得分:3)

它正在传递指向第k + 1个字符的指针。当它进入递归时,每次调用都会越来越远地进入字符串。