可以详细解释怎么没有发生变化 数组S原序列输出

问题遇到的现象和发生背景 可以详细解释怎么没有发生变化 数组S原序列输出
遇到的现象和发生背景,请写出第一个错误信息

img

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

1、这个方法的功能是字符串翻转

img

2、p和q的值

img

img

img

3、这里涉及的指针概念比较绕


#include <stdio.h>
#include <stdlib.h>

/*冒泡排序*/
void f(char s[]) {
    /*
        知识点【星号在C语言里的含义】
        1)乘法,1*1
        2)定义指针变量,char* p,数据类型后面
        3)解引用运算符,引用地址指向的值,char *p,变量前面
        指针其实是一个整形变
        用来存储其它变量的地址
    */
    char *p = s;    // 定义一个指针p,值为abcde,p默认指向字符串的首个字符地址
    char *q = s;    // 定义一个指针q,值为abcde,p默认指向字符串的首个字符地址
    char t;            // 定义一个字符
    while (*++q);    // ++q指针指向下一个地址,*++q,取指针指向下一个地址的值,就是空值
    q--;            // 上一个指针指向e,abcde
    // 第一次循环:p<q 》a < e 》True
    while (p < q) {
        t = *p;        // p=abcde,*p取第一个值a,赋值给t
        *p = *q;    // *q=e,将e值赋值给*p=ebcde
        *q = t;        // t=a,将a赋值给*q,就是将a值赋值到e之前所在的地址,本来是p=ebcde,*q指针指向的是e的地址,a的值存放到e的地址,所有变为了ebcda
        p++;        // 指向第二个值开始,ebcda变成bcda
        q--;        // q--指向倒数第二位置 q由a变成da
    }
}

int main()
{
    char charArr[6] = { 'a','b','c','d','e' };
    printf("%s\n", charArr);
    f(charArr);
    printf("%s\n", charArr);

    printf("\n");
    system("pause");
    return 0;
}

不应该啊,代码运行了一下,没有问题啊,字符串倒置了