字符串逆置的两种递归写法:
#include<stdio.h>
#include<Windows.h>
#include<string.h>
void mySwap(char * ch1, char * ch2)
{
*ch1 ^= *ch2;
*ch2 ^= *ch1;
*ch1 ^= *ch2;
}
void reverseString2(char * str, int start, int end)
{
if (start >= end) return;
mySwap(&str[start++], &str[end--]);
reverseString2(str, start, end);
}
void reverseString1(char * str)
{
int len = strlen(str);
char temp = *str;
*str = *(str + len - 1);
*(str+len-1) = '\0';
if (strlen(str + 1) >= 2)
{
reverseString1(str + 1);
}
*(str+len-1) = temp;
}
int main()
{
//char * str = "hello";这样写内容不允许修改,
//它开辟在字符串常量区
char str[] = "hello";
int start = 0;
int end = strlen(str) - 1;
//reverseString2(str, start, end);
reverseString1(str);
printf("%s\n", str);
system("pause");
return 0;
}