我们在 '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
。
start
和 end
是指向字符串开头和结尾的指针。 start + strlen(str)
实际上是要交换的最后一个字符之后的一个字符,因此 end
在比较之前递减,而 start 在比较之后递增。当两个指针在字符串的中间相遇时,就会执行相反的操作。保留字符串末尾的空字节
此函数正在反转给定字符串中字符的顺序。它通过输入它的开始和结束指针来调用。例如像这样调用的函数
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 在比较之后递增。当两个指针在字符串的中间相遇时,就会执行相反的操作。保留字符串末尾的空字节