反向字符串:为什么会崩溃?

时间:2013-06-13 03:51:43

标签: c++ c

我正在尝试实现这个简单的字符串反转功能,但它一直在崩溃。我已经完成了这一百次,但我通常使用字符串而不是char *。我错过了什么?

void reverse(char* str)
{
    //First determine the size of the string
    int length = 0;
    char* temp = str;
    while(*temp)
    {
      temp++;
      length++;
    }

    int start = 0;
    int end = length - 1;

    while(start < end)
    {
        char temp = str[start];
        str[start] = str[end];   // I get a EXEC_BAD_ACCESS here for start = 0
        str[end] = temp;
        start++; end--;
    }

    cout<<"Reversed: "<<string(str)<<endl;
}

1 个答案:

答案 0 :(得分:5)

reverse("Test");

根据定义,不能修改常量。在上面的代码中,“Test”是一个字符串常量。