引发了异常: 写入访问权限冲突。
s 是 0x151FCD4。
代码如下:
#include <iostream>
#include <string>
using namespace std;
void ReverseString(char*s, int from, int to)
{
while (from < to)
{
char t = s[from];
s[from++] = s[to];
s[to--] = s[from];
}
}
void Reverse(char* s)
{
int i = 0;
int j = 0;
while (true)
{
if (s[i] != ' '&&s[i] != '\0')
{
i++;
continue;
}
if (s[i] == '\0')
{
ReverseString(s, j, i - 1);
break;
}
ReverseString(s, j, i - 1);
j = i + 1;
i++;
}
ReverseString(s, 0, i-1);
}
void main()
{
char* s = "I am a student.";
Reverse(s);
cout << s<<endl;
delete s;
system("pause");
}
其中是
void ReverseString(char*s, int from, int to)
{
while (from < to)
{
char t = s[from];
s[from++] = s[to];
s[to--] = s[from];
}
}
中的s[from++] = s[to];报错
谢谢各位大佬了!!!!
3 个解决方案
#1
s[from]在常量数据区,能读不能写。"I'm student"所在的空间是只读的,也不是new出来的,不需要delete
#2
楼上正解
详情 百度字符串的不可变性
用别的变量存放改变后的值
详情 百度字符串的不可变性
用别的变量存放改变后的值
#3
楼上正解
详情 百度字符串的不可变性
用别的变量存放改变后的值
详情 百度字符串的不可变性
用别的变量存放改变后的值
#1
s[from]在常量数据区,能读不能写。"I'm student"所在的空间是只读的,也不是new出来的,不需要delete
#2
楼上正解
详情 百度字符串的不可变性
用别的变量存放改变后的值
详情 百度字符串的不可变性
用别的变量存放改变后的值
#3
楼上正解
详情 百度字符串的不可变性
用别的变量存放改变后的值
详情 百度字符串的不可变性
用别的变量存放改变后的值