C语言。
void reverse(char *str)
{
char* end = str;
char tmp;
if (str)
{
while (*end)
{
++end;
}
//执行完while后end指向了null,所以需要--end来回退一下。
--end;
//头尾各自交换内容直到两个指针在中间碰头
while (str <end)
{
tmp = *str;
*str++ = *end;
*end-- = tmp;
}
}
}
PS:这样做就不用额外分配空间了。