#include<iostream>
using namespace std;
#define STRLENTH 100
char *str_reverse1(char *str)
{
char temp[STRLENTH];//字符数组:寄存逆序后的字符
char *p = str; //字符指针:指向最后1个非''字符
int i = 0;
/*找到最后1个非''字符并使p指向它*/
while(*p != '')
{
p++;//while循环以后p指向''p--后指向数组的最后1个字符(非'')
}
p--;
/*将逆序后的字符寄存在临时空间temp中*/
while(p != str)
{
temp[i] = *p;
i++;
p--;
}
temp[i] = *p; //while循环以后第1个字符未寄存进去
temp[i+1] = '';//数组末尾f赋''
/*将逆序以后的字符拷贝到原数组中*/
strcpy(str,temp);
return str;
}
char *str_reverse2(char *str)
{
char *p = str; //字符指针:指向最后1个非''字符
char *ret = str;//字符指针: 用于返回数组的首地址
/*找到最后1个非''字符并使p指向它*/
while(*p != '')
{
p++;
}
p--;
/*对称的字符交换---->到达字符的翻转*/
char tmp;
while(str < p)
{
tmp = *str;
*str = *p;
*p = tmp;
str++;
p--;
}
return ret;
}
int main()
{
char str[] = "abcdefghij";
cout<<str_reverse2(str)<<endl;
return 0;
}