0
void func(char *s[]){
    printf("s: %d\n", 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: %d\n", sizeof(a));

    func(a);
}

这输出

a: 16
s: 8

为什么in和的输出sizeof()不同?另外,是否可以通过 获取数组中的数量?caller()func()funcchar *sizeof

4

2 回答 2

0

一个是两个字符指针的数组。另一个是指向指针数组的指针。它们的大小不一样。

于 2013-03-26T18:02:03.023 回答
0

在 C/C++ 中,Array 衰减为指针.char *s[] 是指针,指针的大小始终固定为 4 或 8(取决于机器)。

于 2013-03-26T18:03:48.100 回答