#include<iostream>
using namespace std;
void reverse(char *s, int l, int r) // 数组版本,l r 从0开始计数
{
int len = strlen(s);
int m = (l+r)/2;
if(len%2 != 0)
{
for (int i = l; i < m; i++)
{
char tmp;
tmp = s[i];
s[i] = s[r-i];
s[r-i] = tmp;
}
}
else
{
for (int j = l; j <=m; j++ )
{
char tmp;
tmp = s[j];
s[j] = s[r-j];
s[r-j] = tmp;
}
}
}
void reverse2(char *s) //指针版本
{
int len = strlen(s);
char *p = s+len-1;
while(s != p)
{
char tmp;
tmp = *p;
*p = *s;
*s = tmp;
s++;
if(s == p) //消除当len是偶数时的影响
break;
else
p--;
}
}
int main()
{ char s[] = "This is hello world";
char h[] = "abcdef";
reverse2(s);
reverse2(h);
cout<<s<<endl;
cout<<h<<endl;
return 0;
}
注意当字符串的个数是偶数时,版本2中的细节(p s 不可能相等)。