一道关于VC++的编程题
//设计一个程序,将输入的一个字符串按逆序输出
#include<iostream.h>
char *flip(char *ptr)
{
char *p1,*p2,temp;
p1=p2=ptr;
while(*p2++);
p2-=2;
while(p1<p2){
temp=*p2;*p2--=*p1;
*p1++=temp;
}
return ptr;
}
void main()
{
char str[200];
cout<<"输入一个字符串:";
cin.getline(str,200);
cout<<str<<'\n';
cout<<flip(str)<<'\n';
}
如果我输入ABCDEF,我不能理解:对于return ptr,我想问,(1)ptr不是至始至终都没改变吗,为何会输出FEDCBA,这不是p2的结果吗?哪里可以看出ptr的结果就是p2呢(2)这道题运行完后,p1,p2,ptr都一样吗?为何呢?(3)请对照程序逐步讲解一下
追问:为何“ptr还是指向字符串的首地址,但是该字符串的值已改变”