C中的就地字符串反转
我正在尝试学习C的基础知识,但我无法弄清楚为什么这段代码不起作用。 reverse()中的while循环导致总线错误。我在编程采访书中发现了几乎完全相同的代码作为有效的解决方案,但是我在这里发布的这个或其他类似方法都没有出现总线错误。
#include <stdio.h>
void reverse(char* str) {
char* end = str;
char tmp = 0;
if(str) {
while(*end) {
end++;
}
--end;
while(end>str) {
tmp = *end;
*end-- = *str;
*str++ = tmp;
}
}
}
int main() {
char* a = "12";
puts(a);
reverse(a);
puts(a);
return 0;
}
没有找到相关结果
已邀请:
3 个回复
倾坞髓
的声明更改为
,使其成为可写char数组
邪罗逢确胃
至
膏焦凑
和
指向相同的内存位置 - >它们是同一对象的两个不同名称。您可以避免使用两个变量: