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;
}
在对函数的调用中,它传递一个字符串+一个整数。这会变成什么?
答案 0 :(得分:5)
remaining_string不是字符串;它是指向角色的指针。因此,向其添加一个整数只会移动指针。
例如,如果char *blah = "hello"
,则blah+1
会指向"ello"
。
答案 1 :(得分:3)
它正在传递指向第k + 1个字符的指针。当它进入递归时,每次调用都会越来越远地进入字符串。