65,208
社区成员
发帖
与我相关
我的任务
分享void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
memset(desc, 0, length);
desc += length-2;//mark,因为数组下标都是从0开始的,故-2
while(*str != '\0'){
*desc-- = *str++;
}
desc++;//mark,重置为首地址
cout << desc << endl;
free(desc);
}#include <iostream>
#include <string>
using namespace std;
void ReverseString(const char* str){
int length = strlen(str) + 1;
char* desc =(char*)malloc(length*sizeof(char));
char *p = desc;
memset(desc, 0, length);
desc += length-1;
while(*str != '\0'){
*desc-- = *str++;
}
++desc;
string s(desc);
cout << s << endl;
free(p);
//free(desc);
}
int main() {
char a[] = "this is a test.";
ReverseString(a);
return 0;
}
不要问我为什么直接释放desc出错
#include <iostream>
using namespace std;
void ReverseString(const char* str)
{
int length = strlen(str);
char* desc =(char*)malloc((length+1)*sizeof(char));
memset(desc, 0, (length+1)*sizeof(char));
desc += length-1; //这个地方减一
while(*str != '\0')
{
*desc-- = *str++;
}
desc += 1;
desc[length] = 0; //可有可无
cout << desc << endl;
free(desc);
}
int main()
{
char *str = "abcd";
ReverseString(str);
}