程序编译正常,但在运行时崩溃并显示: 流程终止,状态为-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--;
}
}
}
有什么想法吗?
答案 0 :(得分:2)
您的reverse
实现完全没有问题:只要您传递的字符串为空终止且可写,您的代码就会正常工作。
然后调用它的方式肯定有问题。最常见的可能性是传递字符串文字,写入可能导致崩溃的未定义行为:
char *s = "quick brown fox";
reverse(s); // <<== This would be undefined behavior