【C语言】这个函数应该怎么理解?

自己对于二维型字符数组理解不够透彻


void paixu(char s[5][6])
{
    int i,j;
    char *p,temp[10];
    p=temp;
    for(i=0;i<9;i++)
        for ( j = 0; j<9-i; i++)
        if(strcmp(s[j],s[j+1])>0)
        {
            strcpy(p,s[j]);
            strcpy(s[j],s[+j+i]);
            strcpy(s[j+i],p);
        }
}

其实你把它当一个字符串数组理解就可以了,整个代码就是这个逻辑实现的。
这就是个冒泡排序,从小到大排序
用strcmp比较相邻两个字符串的大小,如果前一个字符串更大,那么用strcpy进行交换,p是临时交换字符串

这个是要实现一个五个等长字符串的排序,第一种方法是使用二维数组来完成

char s[5][6] 也可以写为 char *s[5],因此他也就是5个字符串组成的数组。把字符串作为单个类型,除了具体的操作实现外,跟int s[5]在算法上啥区别了