只需要定义两个char类型的指针p1、p2,一个指向字符串起始地址,一个指向最后一个字符地址,交换它们的值。
接下来指针p1指向第二个字符地址,指针p2指向倒数第二个字符地址,交换它们的值。
依此类推,交换第三个字符和倒数第三个字符 … 直至指针p2地址的值小于或者与p1相同。代码实现如下:
#include <stdio.h>
int main()
{
char data[5] = "hello"; //要反转的字符串
char *p1 = data; //指针p1指向数组第一个下标
char *p2 = data+sizeof(data)/sizeof(data[0])-1; //指针p2指向数组最后一个下标
char tmp;
while (p2>p1)
{
tmp = *p1; //将指针p1中的值存放在临时变量tmp中
*(p1++) = *p2; //把指针p2指向的值赋给p1,之后p1指针自身加一
*(p2--) = tmp; //把临时变量tmp的值赋给p2,之后p2指针自身减一
}
printf("data = %s\n", data);
return 0;
}
执行后的结果