求大神写一下下面C++程序的详细理解及应用

#include
#include
#include
void fun(char *s)
{char c;
int i=0;

c=s[0];
    s++;
while(*s)
{
*(s-1)=*s;
    s++;
}

*(s-1)=c;
*s='\0';

}
void main()
{
char a[8];
cout<<"请输入一个字符串"< cin>>a;
cout<<"转换前的字符串"<<endl;
cout<<a<<endl;
fun(a);/*完成函数调用*/
cout<<"转换后的字符串"<<endl;
cout<<a<<endl;

控制台输入字符串s_in,通过转换得到输出字符串s_out并通过控制台打印, 转换的算法在函数fun中提供:
转换算法是字符串的第一个字符移到最后,后面的字符向前挪动,比如输入:
s_in = abcdefg;
那么:
s_out = bcdefga;