【发布时间】:2019-06-07 01:53:57
【问题描述】:
我正在关注 pdf 来研究递归和字符串操作,但我偶然发现了这一点。我通常了解递归函数的行为方式(仍然不是那么好),但无法弄清楚这一点。这反转了字符串。好吧,把它倒过来打印出来。
void reverse(const char *const sptr);
int main()
{
char sentence[80];
printf("Enter a line of text:\n");
gets(sentence);
printf("\nThe reversed version:\n");
reverse(sentence);
puts("");
return 0;
}
void reverse(const char *const sptr)
{
if(sptr[0] == '\0')
{
return;
}
else{
reverse(&sptr[1]);
putchar(sptr[0]);
}
}
我真的不明白 putchar 在这种情况下是如何工作的。谁能给我解释一下?我想这不仅适用于 putchar,在调用函数“之后”编写另一个命令行时,该函数的行为如何?
【问题讨论】:
-
imho,这更容易理解没有数组语法,而不是只使用指针算术和解引用运算符。在
reverse内,将所有sptr[0]更改为*sptr,并将递归调用参数更改为sptr+1,可能(不是说会;可能)有帮助