C++ c+;中的反向数组代码有什么问题+;?
程序编译正常,但在运行时崩溃,并显示: 进程已终止,状态为-1073741819C++ 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;
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
,即使是这样,它也会与由于它是一个局部声明的变量,所以我会屏蔽它。谢谢,我没有注意调用函数的方式。