【发布时间】:2015-02-21 01:29:27
【问题描述】:
在下面反转字符串的代码中,我不明白 if 语句的目的是什么。 if 语句试图捕捉的情况是什么?
这不是多余的吗,因为您已经设置了 char*end= str,因此 if(str) 语句必须为真,否则此时您的代码已经失败?
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;
}
}
【问题讨论】:
-
这段代码有问题,如果
str为空,end--;会导致未定义的行为。它需要if ( !str ) return;在函数的开头而不是,尝试什么都不做是没有意义的。