我们在 'Reverse' 函数中比较什么值? C

What value are we comparing in the 'Reverse' function? 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

startend 是指向字符串开头和结尾的指针。 start + strlen(str) 实际上是要交换的最后一个字符之后的一个字符,因此 end 在比较之前递减,而 start 在比较之后递增。当两个指针在字符串的中间相遇时,就会执行相反的操作。保留字符串末尾的空字节