//通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识
/*分析过程:
假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度
相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转
*/
/*第一种,采用以上思路解法,传递为const类型C风格字符指针,返回为char*类型*/
//直接使用字符数组赋值
char* strrev1(const char* str)
{
const size_t length = strlen(str);//求字符长度
char *temp = new char[length];//新建一个等长度的字符数组
strcpy(temp,str);//字符串拷贝
for (size_t i = 0; i <= length/2; ++i)//对字符数组中的字符反转,循环执行条件为标识小于或等于字符长度一半
{
char c = temp[i];
temp[i] = temp[length - i -1];
temp[length - i -1] = c;
}
return temp;//返回反转后的字符
}
//采用指针操作方式
char* strrev2(const char* str)
{
char* tmp = new char[strlen(str)];
strcpy(tmp,str);
char* ret = tmp;//用来最后返回数组指针
char* p = tmp + strlen(str) - 1;
while (p > tmp)
{
char t = *tmp;
*tmp++ = *p;
*p-- = t;
}
return ret;
}