请大家帮我看一下这个c++程序的错误所在

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:49:43
#include<iostream>
using namespace std;
void revstr(char *s) //该函数目的是实现字符串中字符的换序
{
char *p,*q,c;
if(s==NULL)return;
p=s; //让p指向s的首地址
q=s+strlen(s)-1; //让q指向s的尾地址
while(p<q)
{
c=*p;
*(p++)=*q; //问题好像出在这一句上,似乎这条语句不合法
*(q--)=c;
}
cout<<s<<endl;
}
void main()
{
revstr("abcde");
}

你的程序的错误不在于函数,而在于调用,这样就不会出错
int main()
{
char str[20];
cin>>str;
revstr(str);
return 0;
}
revstr("abcde"); 而"abcde"是一个字符串常量,不能被修改

楼上正解!
试图修改只读的内存,指针和数组也要搞清楚!