此程序的执行顺序是什么
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");
}
[此贴子已经被作者于2006-7-1 9:53:27编辑过]