一个c++编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 10:03:56
#include<iostream>
using namespace std;
void reverse(char *s);
void main()
{
char *s=NULL;
cout<<"请输入一个字符串"<<endl;
cin>>s;
char *m=new char(strlen(s)+1);
strcpy(m,s);
cout<<"你输入的字符串是:"<<endl;
cout<<m;
cout<<"反转后的字符串是:"<<endl;
reverse(m);
}
void reverse(char *s)
{
char *t=strlen(s)+s-1;
while(t)
{
cout<<t;
t--;
}
} 这个程序是用来将字符串反转输出,可是不知道是怎么回事,可能是我的指针没弄清楚,希望高手指教!

#include<iostream>
using namespace std;
void reverse(char *s);
int main()
{
/*
char *s=NULL; //////////////s指向空
cout<<"请输入一个字符串"<<endl;
cin>>s; ////////s指向空不能对s进行任何的操作。应该先申请空间
char *m=new char(strlen(s)+1); /////////m就是字符型的指针不必申请空间,可对m进行指针的操作
strcpy(m,s); ///////////这句也是错的
cout<<"你输入的字符串是:"<<endl;
cout<<m;
cout<<"反转后的字符串是:"<<endl;
reverse(m); */
char *s=NULL;
cout<<"请输入一个字符串"<<endl;
s = new char[100];
cin>>s;
char *m;
cout<<"你输入的字符串是:"<<endl;
cout<<s<<endl; ///输出s就好
cout<<"反转后的字符串是:"<<endl;
reverse(s);///对s进行操作
return 0;
}
void reverse(char *s)
{
char *t=strlen(s)+s-1; /////////字符指针t指向s的未尾
while(t!=s)// s指向main函数中的s的首地址,当t指向的地址与s相同时,停止运算