为什么顺序没有变呢哎呀

#include<stdio.h>
#include<string.h>
int main()
{
    void com(char*q1,char*q2,char*q3,int a,int b,int c);
    char s1[10],s2[10],s3[10];//定义三个字符串数组
    scanf("%s%s%s",s1,s2,s3);//连续输入三个字符串,以空格隔开
    char*q1,*q2,*q3;
    q1=s1;q2=s2;q3=s3;
    int a,b,c;
    a=strlen(q1);b=strlen(q2);c=strlen(q3);//计算三个字符串
    com(q1,q2,q3,a,b,c);//比较三个字符串的大小
    printf("%s<=%s<=%s\n",s1,s2,s3);
    return 0;
}
void com(char*q1,char*q2,char*q3,int a,int b,int c)//比较三个字符串大小
{
    void exchange(char * s1,char * s2);
    if (a>b)
        exchange(q1,q2);
    if(a>c)
        exchange(q1,q3);
    if(b>c)
        exchange(q2,q3);
}
 void exchange(char * s1,char * s2)//交换两个字符串
 {
 
     char p[10];
     strcpy(p,s1);
     strcpy(s1,s2);
     strcpy(s2,p);
     
 }


img

exchange(&q1, &q2)

void exchange(char ** s1,char ** s2)//交换两个字符串
{
char p[10];
strcpy(p,s1);
*s1 = *s2;
*s2 = p;
}
你可以尝试一下,我好久没写C了,可能不对,形参和实参的问题,你可以搜索一下

你为什么不直接写a=strlen(S1),而一定要放个指针在里面?