问题描述
- 字符创反转内容出错问题
-
使用注释的三条代码和正在使用的三条代码为什么会得到不同的结果,注释代码得到dccd,另一条得到dcba;#include<iostream> using namespace std; int reverce(char *str) { if(str==NULL) { return -1; } char *p1=str; int length=strlen(str); char *p2=str+length-1; while(p2>p1) { char temp=*p1; *p1=*p2; *p2=temp;** //char *temp=p1; //*p1=*p2; //*p2=*temp; ++p1; --p2; } } void main() { char buf[]="abcd"; reverce(buf); cout<<buf<<endl; }
解决方案
注释的代码,temp没有把p1的值缓冲起来,只是保存了指针,当*p1=*p2的时候,此时p1已经被换成了p2,对应的*temp得到的也是p2
解决方案二:
反转问题
解决方案三:
采纳caozhy同学的,应该就是这个原因,两者的指针并没有交换。
解决方案四:
没有另存*p1的值,画下图吧。。。。。。。。。。。。
时间: 2024-09-17 21:07:44