【发布时间】:2011-06-14 17:34:00
【问题描述】:
我正在尝试学习 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;
}
【问题讨论】:
-
在 SO 上查看 stackoverflow.com/questions/4493139/are-string-literals-const 和许多其他问题(例如至少每周一次)。