0

次のプログラムを実行すると、配列のサイズが異なります。さまざまな方法で疲れましたが、結果は同じです。何が間違っているのでしょうか?

#include<stdio.h>

void array_size(char *a[])
{
    printf("Func Array Size: %d\n", sizeof(a));
}

int main()
{
    char *str_array[]={"one", "two", "three"};

    printf("Array Size: %d\n", (int)sizeof(str_array));

    array_size(str_array);

    return 0;
}
4

2 に答える 2

-1

これはsizeof、ランタイム関数ではなく、コンパイラが組み込まれているためです。バイナリにハードコードされています。

`sizeof((char *)[]) = sizeof(a) = sizeof(void *)`
`sizeof(str_array) = sizeof({"one", "two", "three"}) = 3 * sizeof(char *)`
于 2013-04-25T13:03:11.123 に答える