C++ c+;中的反向数组代码有什么问题+;?

C++ c+;中的反向数组代码有什么问题+;?,c++,arrays,pointers,char,C++,Arrays,Pointers,Char,程序编译正常,但在运行时崩溃,并显示: 进程已终止,状态为-1073741819 void reverse(char *str){ char * end1 = str; char tmp = 'c'; if(str){ while(*end1){ ++end1; } --end1; while(str<end1){ tmp=*str;

程序编译正常,但在运行时崩溃,并显示: 进程已终止,状态为-1073741819

void reverse(char *str){

    char * end1 = str;
    char tmp = 'c';
    if(str){
        while(*end1){
            ++end1;
        }
        --end1;

        while(str<end1){
            tmp=*str;
            *str=*end1;
            *end1=tmp;
            str++;
            end1--;
        }
    }
}
void反向(char*str){
char*end1=str;
char tmp='c';
如果(str){
而(*end1){
++end1;
}
--end1;

while(str您的
reverse
实现绝对没有问题:只要您传递的字符串以null结尾且可写,您的代码就可以工作

那么,您调用它的方式肯定有问题。最常见的可能性是传递字符串文字,写入是可能导致崩溃的未定义行为:

char *s = "quick brown fox";
reverse(s); // <<== This would be undefined behavior
char*s=“快速棕色狐狸”;

reverse(s);//您如何调用
reverse
?您确定要传递的字符串是可修改的吗?即,不是
char*str=“foo”猜字符串文字。是的,这个函数看起来很好。你可能是在非法输入时调用它。不确定,但你是否使用了
名称空间std;
?这可能与
std::endl
char*endl
@Jagannath-Nah冲突,他是
end1
而不是
endl
,即使是这样,它也会与由于它是一个局部声明的变量,所以我会屏蔽它。谢谢,我没有注意调用函数的方式。