#include<stdio.h>
char *reverse_string(char *string)
{
char *ret = string; //保存数组的首地址
char *left = string;//指向数组的第一个字符
char *right; //指向数组的最后一个非'\0'字符
char temp; //临时变量,用于交换
while(*string != '\0')
{
string++;
}
right = string-1; //执行完while后,string指向'\0',string-1即指向数组的最后一个非'\0'字符
while(left < right)//当left=right时,说明交换完毕,第一个与最后一个,第二个与倒数第二个。。。。依次交换,完成翻转
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
return ret;
}
int main()
{
char str[] = "abcd";
// char *str = "abcd" 程序崩溃,常量字符串无法改变
printf("%s\n",reverse_string(str));
return 0;
}原文:http://blog.csdn.net/zongyinhu/article/details/45033723