如何分析下列程序的运行结果?帮我分析一下程序中的 ++s 和--s是怎么的?运行结果怎么是逆序的?

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:48:18
#include<stdio.h>
void fun(char *s)
{
if(*s)
{
fun(++s);
printf("%s\n",--s);
}
}
main()
{
static char str[]="123";
fun(str);
}
本程序的运行结果为:
3
23
123
为什么是这样的呢?
为什么不直接是123呢?
为什么又不是
1
12
123
呢?

采用了递归

FUN 第一次在MAIN中被调用 第二次又被FUN自己 调用了

当不能在被调用了(s="\0")

从最后一次调用的FUN函数 一层一层 解析

简单分析

s="123" -> fun -> s="23" -> fun -> s="3" -> fun -> s="\0"

-> printf '23' -> printf '123' -> printf '乱码123'(或者不输出)

照你上边应该不是逆序啊

++s --s 是加或减s的地址 ++s; s++;两者区别是前者先加+1,然后赋值,后者是先保持原值,然后等(复合)语句结束(此次循环),然后在加+1

对问题的补充 对!运行结果是那样的 我每行多了一个字母数字

结果就是那得 递归 你看看书吧 有图示的最好 我实在讲不清

看书吧

调用是顺序 解构那当然是逆序 多多想想 其实很简单的

你自己画张简易的流程图 自己弄弄 10分钟 你就懂了 真的 好多编程问题要么问老师 最好自己想 写出来 比较好 我只能这样了