先看下一个关于字符串左旋的代码
#include <iostream>
using namespace std;
void reverse(char *str,int start,int end)
{
while (start<end)
{
char temp=str[start];
str[start++]=str[end];
str[end--]=temp;
}
}
void rotateString(char *str,int m,int n)
{
m=m%n;
reverse(str,0,m-1);
reverse(str,m,n-1);
reverse(str,0,n-1);
}
int main()
{
//char str[]="abcdefg";
char *str="abcdefg";
rotateString(str,3,strlen(str));
cout<<str<<endl;
}
这么写后程序崩溃,下去调试发现每次到 语句 str[start++]=str[end];显示错误时无法对str[start]地址进行写操作,很奇怪为什么。
其实这个错误是基本概念的错误!!!char *str="abcdefg"; 其实这个str指向的字符串为const 是无法进行修改的!!!!
所以str只能进行读操作。