C字符串数组sizeof()改变


void func(char *s[]){
    printf("s: %dn", sizeof(s));
}
void caller(){
    char *a[2];
    for(int i = 0; i < 2; i++){
        a[i] = (char *)malloc(50 * sizeof(char));
    }
    strcpy(a[0], "something");
    strcpy(a[1], "somethingelse");
    printf("a: %dn", sizeof(a));
    func(a);
}
这个输出

a: 16
s: 8

为什么caller()func()sizeof()的输出不同?此外,func是否有可能通过sizeof在数组中获得char *的数量?

一个是包含两个字符指针的数组。另一个是指向指针数组的指针。

在C/c++中,Array会衰变成指针。Char *s[]是一个指针,指针的大小总是固定为4或8(取决于机器)。

最新更新