C语言函数递归题目求正确思路,答疑?

#include<stdio.h>#include<stdlib.h>voidreverse_string(char*str){if(*(++str)!='\0'){re... #include <stdio.h>
#include <stdlib.h>
void reverse_string(char * str)
{
if(*(++str) != '\0')
{
reverse_string(str);
}
printf("%c", *(str-1));
}
int main()
{
char*ch = "ab";
printf("翻转前的字符串:%s\n", ch);
printf("翻转后的字符串:");
reverse_string(ch);
printf("\n");
system("pause");
return 0;
}
str指向a时,*(++str)!=\0成立,继续调用函数,此时str指向b, ++str 后, *(++str)!=\0不成立,输出字符b;此时str依然指向'\0',是如何输出字符a的?求详细解惑
展开
 我来答
周大个子79
2020-03-19 · TA获得超过147个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:31.1万
展开全部
比如字符串abc,第一次调用函数,*(++str)是b,然后第二次调用,这时候*(++str)是c,第三次调用,*(++str)是\0,这时候输出\0前面一个c,第三次调用完成,然后返回第二次调用,输出c前面一个,也就是b,第二次调用结束,返回第一次调用,输出b前面也就是a,第一次调用结束
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式