在下面反转字符串的代码中,我不明白 if 语句的目的是什么。这个 if 语句试图捕捉什么情况?
这不是多余的吗,因为您已经设置了 char*end= str,因此语句 if(str) 必须为 true,否则您的代码此时已经失败了?
void reverse(char* str)
{
char *end = str;
char temp;
if (str)
{
while (*end)
{
end++;
}
}
end--; //pulls back one for \0 character
while (str < end)
{
temp = *str;
*str++ = *end;
*end-- = temp;
}
}
最佳答案
它可以防止取消引用 NULL
指针,非常好的做法。
如果 str == NULL
,则 *end
将是未定义的行为,因此在取消引用之前检查这一点确实是一件好事,因为忽略这种可能性会导致一个很难检测到的错误,当然使用调试器除外,但是,通常情况下,当您可以几乎不需要任何代价来避免它时,为什么还需要跟踪问题。
这样做实际上会更好
if (str == NULL)
return;
关于c - 使用指针反转 C 中的字符串 - if 语句的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28641002/