C语言 下面程序的输出结果是( )

来源:百度知道 编辑:UC知道 时间:2024/06/11 01:55:42
#include <stdio.h>
main()
{ char *a="1234"; fun(a); printf("\n"); }
fun(char *s)
{ char t;
if (*s) {t=*++s; putchar(t); fun(s); }
}
答案是:The "234" is namely the string234
为什么啊?能解释一下伐?

t=*++s
问题在这里咯
++就是+1 不会有1
也就是说"1234"
++是从2读起
所以输出234

fun(char *s)
{ char t;
if (*s) {t=*++s; putchar(t); fun(s); }
}

这个函数的功能就是从字符串第二字节开始输出
t=*++s;
这句就是第二字节的原因
改成t=*s++;就变成从第一字节开始输出
if (*s)就是遇到*s==0即退出

fun(char *s)函数调用中,参数传递的是字符串的首地址,所以t=*++s,是将S后移一位,指向下一个数据,然后赋给t。用了简单的递归调用,仔细看一下就能明白。