如何解决我们在“反向”函数中比较什么值? C
此函数正在反转给定字符串中的字符顺序。它通过输入它的开始和结束指针来调用。例如像这样调用的函数
reverse(str,str + strlen(str));
我不明白为什么 while 条件有效,或者更准确地说,我们通过 (start<--end)
比较了什么。
void reverse(char* start,char* end)
{
while (start < --end)
swap(start++,end);
}
解决方法
前缀 --
运算符从操作数中减去一并计算为减后的值。
因此,条件 start<--end
是检查 start
是否小于 end - 1
并将 end
的值更新为 end - 1
。
start
和 end
是指向字符串开头和结尾的指针。 start + strlen(str)
实际上是要交换的最后一个字符之后的一个字符,因此 end
在比较之前递减,而 start 在之后递增。当两个指针在字符串中间相遇时,则相反。保留字符串末尾的空字节。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。