*q++,该如何处理

*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++;     }