*q++[codeC/C++][/code]#include iostreamusing namespace stdchar* ReverseWord(char* val)int main
*q++
[code=C/C++][/code]#include <iostream>
using namespace std;
char* ReverseWord(char* val);
int main()
{
cout<<ReverseWord("hello");
return 0;
}
char* ReverseWord(char* val)
{
int size=0;
char *q=val;
while(*q++ != '\0')
{
cout<<*q<<size+1<<endl;
size++;
}
q--;
char* str=new char(size+1);
char* p=str;
//char* str=new char(strlen(val)+1);
while(q >= val)
{
*p++=*--q;
}
*p='\0';
return str;
}
运行结果:
e1
l2
l3
o4
5
olleh
为什么会出现size=5,且此时的*q=' ',即空格呢
[解决办法]
- C/C++ code
#include <iostream>using namespace std;char *ReverseWord(char *val);int main(){ char *str = ReverseWord("hello"); // 用变量接收,因为你函数里面用到了new cout << str << endl; delete[] str; // 函数里面new的空间,从这里delete return 0;}char *ReverseWord(char *val){ int size = 0; char *q = val; while (*q != '\0') { cout<< *q++ << size + 1 << endl; // 把while里面的++移到这里 size++; } q--; char *str = new char[size + 1]; // 圆括号改方括号 char *p = str; while (q >= val) { *p++ = *q--; // --改为后置 } *p = '\0'; return str;}
[解决办法]
- C/C++ code
while(*q!= '\0') { cout<<*q<<size+1<<endl; q++; size++; } 