main()
{ char ch[7]={"abcdef"};
put(ch);
printf("\n");
}
put(char *ch)
{
if((*ch)=='\0') return;
put(ch+1);
printf("%c",*ch);
}
运行此程序的结果: fedcba
此程序的执行顺序是什么?按理说应该在执行完递归调用后只输出一个字符'F',为什么会全部输出数组的值呢?
哪位高手会解答……
main()
{ char ch[7]={"abcdef"};
put(ch);
printf("\n");
}
put(char *ch)
{
if((*ch)=='\0') return;
put(ch+1);
printf("%c",*ch);
}
运行此程序的结果: fedcba
此程序的执行顺序是什么?按理说应该在执行完递归调用后只输出一个字符'F',为什么会全部输出数组的值呢?
哪位高手会解答……
注意递归深度、关注返回哪里。
既要低头拉车、也得抬头问路。
把你的代码展开是这样: (虽然不能运行,但可说明问题)
void put(char *ch)
{
if((*ch)=='\0')
return;
put(ch+1)
{
if(*ch=='\0')
return;
put(ch+1)
{if(*ch=='\0')
return;
put(ch+1);
printf("%c",*ch);
}
printf("%c",*ch);
}
printf("%c",*ch);
}
main()
{ char ch[]={"ab"};
put(ch);
printf("\n");
}
char默认最后一个是\0
"abc" 是 a b c \0
顺便问下这里ch+1是什么意思,不是很懂
解释下,谢谢
char默认最后一个是\0
"abc" 是 a b c \0
顺便问下这里ch+1是什么意思,不是很懂
解释下,谢谢
这里ch+1是&ch[1],具体就是串中“下一个”字符的“地址”也。