// 设计函数，接收一个字符串，返回这个字符串的逆向内容。
#include <stdio.h>
#include <string.h> // 使用 strlen() 函数，获取字符串长度

void reverse(char *str);

int main(void)
{
    char str[] = "hello world";
    reverse(str);
    printf("%s\n", str);
    return 0;
}

void reverse(char *str) // 传入的是指针，直接修改原字符串
{
    int len = strlen(str); // 获取字符串长度
    // for (int i = 0; i < len / 2; i++) // 交换前后两个字符，使用二分法
    for (int i = 0; i < len >> 1; i++) // len >> 1 相当于 len / 2
    {
        // char temp = str[i];
        // str[i] = str[len - 1 - i];
        // str[len - 1 - i] = temp;

        // 交换前后两个字符，使用异或法
        str[i] ^= str[len - 1 - i];
        str[len - 1 - i] ^= str[i];
        str[i] ^= str[len - 1 - i];
    }
}