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编辑过]