Recursion 使用递归打印字符串的反转
此代码适用于:Recursion 使用递归打印字符串的反转,recursion,Recursion,此代码适用于: void reverse(char *str) { if(*str) { reverse(str+1); printf("%c", *str); } } 但是,如果我用reverse(++str)更改reverse(str+1),它不会打印第一个字符 在:极客 输出:skee 我不知道为什么。++str先递增然后打印,您需要str++,因为您在方法的第一次调用中更改给您的指针,所以当它最终开始打印并完成执行时,索引已经增加到第二个字符 在第一种情
void reverse(char *str)
{
if(*str)
{
reverse(str+1);
printf("%c", *str);
}
}
但是,如果我用reverse(++str)更改reverse(str+1),它不会打印第一个字符
在:极客
输出:skee我不知道为什么。
++str
先递增然后打印,您需要str++
,因为您在方法的第一次调用中更改给您的指针,所以当它最终开始打印并完成执行时,索引已经增加到第二个字符
在第一种情况下,str+1,str根本没有被修改,所以最后一个printf只打印第一个字符
请记住,前缀和后缀++实际上改变了变量的值。Hm,reverse(str++)将无限大或使seg。过错因为下一个函数只获取str,所以递增的str将保留在上一个函数中,并且只有该函数才能看到它。:)接得好,那么你想完成什么呢?您想让另一个函数同时获取str并附加到它吗?在++str的例子中,另一个函数得到str的附加值,因为你以前有过++,实际上,我只是“试验”了str++的东西。我第一次尝试解决这个问题时,我做了str+1。str++在我看来也是一样,所以是的,只是出于好奇。我通过了C语言编程一级考试,现在是二级,只想尽快掌握C语言。:)