指针数组或数组作实参时,为何必须传首地址,而不能传第二或第三元素的地址?

指针数组作形参,对应的另一个已赋值的指针数组作实参时,为何必须传首地址,而不能传第二或第三元素的地址?

我从第五个位置开始的


/**********************************
    @
    @
    @Time        :2021/06/29 20:16
    @author         :Keep Doing this(小小的鹏弟)
    @SoftWare    : Visual Studio 2019
**********************************/
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
#include<string.h> 
int sort(char *strings[], int n) 
{
char* temp;
int i, j;
for (i = 0; i < n; i++)
{
    for (j = i + 1; j < n; j++)
    {
        if (strcmp(strings[i], strings[j]) > 0)
        {
            temp = strings[i];
            strings[i] = strings[j];
            strings[j] = temp;
        }
    }
}
return 0;
}

int main() {
    int n = 7; int i;
    char* month[] = {"january",
       "february",
        "march",
        "april",
        "may",
        "june",
        "july",
        "august",
        "september",
        "october",
       "novermber",
        "december"
    };
    sort(&month[5], n);
    printf("排序12月:\n");
    for (i = 0; i < n; i++)
    {
        printf("%s\n", month[i]);
    }
}

img

有什么问题么

谁说不能的

#include<stdio.h> #include<string.h> int sort(char *strings[], int n) {

char *temp;
int i, j;
for (i = 0; i < n; i++)
{
    for (j = i + 1; j < n; j++)
    {
        if (strcmp(strings[i], strings[j]) > 0)
        {
            temp = strings[i];
            strings[i] = strings[j];
            strings[j] = temp;

        }

    }

}

}

main() { int n = 12; int i;

char *month[] = { "january",
    "february",
    "march",
    "april",
    "may",
    "june",
    "july",
    "august",
    "september",
    "october",
    "novermber",
    "december"
};

sort(&month[0], n);
printf("排序12月:\n");
for (i = 0; i < n; i++)
{
    printf("%s\n", month[i]);

}

} 比如这段代码,调用函数sort()那里,输入&month[0]就可以,输入&month[1]就不行