能讲解一下代码是如何实现的吗?

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图

#include
#include
#include
void fun(char *p)
{
int n=0;
while(*p++)
{
n++;
}
p-=2;
while(n--)
{
printf("%c",*p--);
}
}

int main()
{
char str[100]={0};
gets(str);
fun(str);
_getch();
return 0;
}

fun里先把指针从字符串开头移到末尾,p-2返回到最后一给字符,之后从后向前挨个输出字符。

先查找每个函数的意思,然后断点调试