调用函数,但循环不结束

新人小白提问,下方的sort函数好像走不出去,这是为什么啊?

#include<stdio.h>
#include<string.h>
void sort(char *name[],int n);
void print(char *name[],int n);

void main()
{
    char *name[4] = {"abc","abcd","abcde","abcdef"};
    int n = 4;
    sort(name,n);
    print(name,n);
}

void sort(char *name[],int n)
{
    for( int i=0;i<n-1;i++ )
    {
        for( int k=0;k<n-i;k++ )
        {
            if (strcmp(name[k],name[k+1]) < 0)
            {
            char *temp;
            temp = name[k];
            name[k] = name[k+1];
            name[k+1] = temp;
            }
            else {;}
        }
    }
}

void print(char *name[],int n)
{
    int i;
    for( i=0; i<n; i++ )
    {
        printf("%s\n",name[i]);
    }
}

for( int k=0;k<n-i;k++ )
->
for( int k=0;k<n-i-1;k++ )

name[k]为什么可以代表字符串这一点我没法理解。