求大神给详细的解析?

#include
#include
char *fun(char (*a)[81],int num,char *max)
{
int i=0;
max=a[0];

for(i=0;i<num;i++)
{
    if(strlen(max)<strlen(a[i]))
        max=a[i];

}
return max;

}
void main()
{
char ss[10][81],*ps;
int n,i=0;
cout<<"输入若干个字符串"<<endl;
cin.getline(ss[i],81);

while(strcmp(ss[i],"****")!=0)
{
i++;
cin.getline(ss[i],81);
}

n=i;
ps=fun(ss,n,ps);
cout<<"最大字符串是   "<<ps<<endl;

}

char fun(char (*a)[81],int num,char *max)
{
int i=0;
max=a[0]; /
先默认将ps指向指向输入的第一个字符串*/
for(i=0;i<num;i++)
{
if(strlen(max)<strlen(a[i]))
max=a[i]; /* 4. 对比输入的所有字符串个数,最后max指向最长的字符串 */

}
return max;

}
void main()
{
char ss[10][81],*ps;
int n,i=0;
cout<<"输入若干个字符串"<<endl;
cin.getline(ss[i],81);

while(strcmp(ss[i],"****")!=0) /* 2. 读取到输入****则停止录入 /
{
i++;
cin.getline(ss[i],81); /
1. 从标准输入读取多个字符串保存到二维数组ss中 /
}
n=i;
ps=fun(ss,n,ps); /
3. 传入ss,录入的字符串个数以及 指针ps /
cout<<"最大字符串是 "<<ps<<endl;/
5.最后ps将指向最长的字符串 */

}