【发布时间】:2013-05-17 21:20:23
【问题描述】:
函数是反转一个C字符串:
void reverse(char[] str){
char *start = str;
char *end = str;
char tmp;
if (str) {
while (*end) {
end++;
}
end--;
while (&str > &end) {
tmp = *str;
*str = *end;
str++;
*end=tmp;
end--;
}
}
}
在最后一个while循环中,当我将*end分配给*str时,这条线导致总线错误,谁能解释一下原因?
顺便说一句,a 和有什么区别 char[] temp 和 char temp[]?
【问题讨论】:
-
发布错误的全文通常被认为是一种好的形式
-
你怎么称呼
reverse? -
char[] temp和char temp[]的区别在于后者是有效的 C 而前者不是。你的代码甚至不应该编译。 -
OP:不要就地编辑您的代码——它会使 cmets 和答案无效。如果您想进行更新,请添加单独的部分。
-
见上面 Basile 的问题。也许您正在尝试反转字符串文字……这在成千上万将反向代码发布到 SO 的新手中很常见。