为什么这个简单的c++;c样式字符串反转方法引发访问冲突异常? 我一直在使用Stroustrup的C++编程语言,而且我很难在早期使用。任务是构建一个反转c样式字符串的方法。我认为我的逻辑是正确的,但是当我试图修改字符串时,我得到了一个错误。我不能这样做吗 int strlen_(char* string) { int count = 0; while (*string != '\0'){ count ++; string ++; } return count; } void rev(char* string) { //length of the string is going to be useful int len = strlen_(string); //two counters, one going forward, one going back int forwardIndex = 0; int backwardIndex = len-1; char temp; while (forwardIndex < backwardIndex){ temp = string[forwardIndex]; string[forwardIndex] = string[backwardIndex]; //Exception Here string[backwardIndex] = temp; forwardIndex--; backwardIndex--; } } void main() { char* test = "test"; rev(test); } int strlen(字符*字符串) { 整数计数=0; 而(*字符串!='\0'){ 计数++; 字符串++; } 返回计数; } 无效版本(字符*字符串) { //字符串的长度将非常有用 int len=strlen(字符串); //两个柜台,一个向前,一个向后 int-forwardIndex=0; int-backardIndex=len-1; 焦炭温度; while(正向索引

为什么这个简单的c++;c样式字符串反转方法引发访问冲突异常? 我一直在使用Stroustrup的C++编程语言,而且我很难在早期使用。任务是构建一个反转c样式字符串的方法。我认为我的逻辑是正确的,但是当我试图修改字符串时,我得到了一个错误。我不能这样做吗 int strlen_(char* string) { int count = 0; while (*string != '\0'){ count ++; string ++; } return count; } void rev(char* string) { //length of the string is going to be useful int len = strlen_(string); //two counters, one going forward, one going back int forwardIndex = 0; int backwardIndex = len-1; char temp; while (forwardIndex < backwardIndex){ temp = string[forwardIndex]; string[forwardIndex] = string[backwardIndex]; //Exception Here string[backwardIndex] = temp; forwardIndex--; backwardIndex--; } } void main() { char* test = "test"; rev(test); } int strlen(字符*字符串) { 整数计数=0; 而(*字符串!='\0'){ 计数++; 字符串++; } 返回计数; } 无效版本(字符*字符串) { //字符串的长度将非常有用 int len=strlen(字符串); //两个柜台,一个向前,一个向后 int-forwardIndex=0; int-backardIndex=len-1; 焦炭温度; while(正向索引,c++,cstring,C++,Cstring,您不能修改文字字符串,您的反向函数会修改它的字符串参数 通过传递类似以下内容来测试反向函数: void main() { char test[] = "test"; rev(test); } 这将在可以修改的数组中复制文本字符串“test” 此外,您正在同时递减forwardIndex和backardindex:您应该递增forwardIndex:forwardIndex++。这个想法是,索引将在中间相遇。你不能修改文字字符串,而你的反向函数修改它的字符串参数。 通过传递类似以

您不能修改文字字符串,您的反向函数会修改它的字符串参数

通过传递类似以下内容来测试反向函数:

void main()
{
    char test[] = "test";
    rev(test);
}
这将在可以修改的数组中复制文本字符串
“test”


此外,您正在同时递减
forwardIndex
backardindex
:您应该递增
forwardIndex
forwardIndex++
。这个想法是,索引将在中间相遇。

你不能修改文字字符串,而你的反向函数修改它的字符串参数。

通过传递类似以下内容来测试反向函数:

void main()
{
    char test[] = "test";
    rev(test);
}
这将在可以修改的数组中复制文本字符串
“test”


此外,您正在同时递减
forwardIndex
backardindex
:您应该递增
forwardIndex
forwardIndex++
。这个想法是指数会在中间相遇。

看来你正在递减转发索引。第一次运行后,它将为-1。查找

forwardIndex--并更改为
forwardIndex++

似乎您正在递减forwardIndex。第一次运行后,它将为-1。查找
forwardIndex--并更改为
forwardIndex++

forwardIndex应该有++没有——forwardIndex也应该有++没有